From e49032ed6b65fead7a085692d4c6335e85dbd9e3 Mon Sep 17 00:00:00 2001 From: Eric Masseran Date: Tue, 18 Mar 2025 00:59:27 +0100 Subject: [PATCH] Dataclass transform typing extension without Final support --- test/test_inference/test_signature.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/test/test_inference/test_signature.py b/test/test_inference/test_signature.py index 334f8a42..64d830d6 100644 --- a/test/test_inference/test_signature.py +++ b/test/test_inference/test_signature.py @@ -563,18 +563,26 @@ ids = [ 'start, start_params, include_params', dataclass_transform_cases, ids=ids ) def test_extensions_dataclass_transform_signature( - Script, skip_pre_python37, start, start_params, include_params + Script, skip_pre_python37, start, start_params, include_params, environment ): has_typing_ext = bool(Script('import typing_extensions').infer()) if not has_typing_ext: raise pytest.skip("typing_extensions needed in target environment to run this test") + if environment.version_info < (3, 8): + # Final is not yet supported + price_type = "float" + price_type_infer = "float" + else: + price_type = "Final[float]" + price_type_infer = "object" + code = dedent( - """ + f""" name: str foo = 3 blob: ClassVar[str] - price: Final[float] + price: {price_type} quantity: int = 0.0 X(""" @@ -599,7 +607,7 @@ def test_extensions_dataclass_transform_signature( quantity, = sig.params[-1].infer() assert quantity.name == 'int' price, = sig.params[-2].infer() - assert price.name == 'object' + assert price.name == price_type_infer @pytest.mark.parametrize(