From 472ee75e3c72ab50055e1025eec8b1deefa290d4 Mon Sep 17 00:00:00 2001 From: Eric Masseran Date: Sat, 15 Mar 2025 13:15:19 +0100 Subject: [PATCH] Add ClassVar support for dataclass --- jedi/inference/value/klass.py | 4 ++++ test/test_inference/test_signature.py | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/jedi/inference/value/klass.py b/jedi/inference/value/klass.py index 5980e478..ee588391 100644 --- a/jedi/inference/value/klass.py +++ b/jedi/inference/value/klass.py @@ -146,6 +146,10 @@ def get_dataclass_param_names(cls): d = name.tree_name.get_definition() annassign = d.children[1] if d.type == 'expr_stmt' and annassign.type == 'annassign': + node = annassign.children[1] + if node.type == "atom_expr" and node.children[0].value == "ClassVar": + continue + if len(annassign.children) < 4: default = None else: diff --git a/test/test_inference/test_signature.py b/test/test_inference/test_signature.py index 9b9748c5..8c7ab302 100644 --- a/test/test_inference/test_signature.py +++ b/test/test_inference/test_signature.py @@ -392,13 +392,18 @@ def test_dataclass_signature( """ name: str foo = 3 + blob: ClassVar[str] price: float quantity: int = 0.0 X(""" ) - code = 'from dataclasses import dataclass\n' + start + code + code = ( + "from dataclasses import dataclass\nfrom typing import ClassVar\n" + + start + + code + ) sig, = Script(code).get_signatures() expected_params = (