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 = (