diff --git a/pyproject.toml b/pyproject.toml index 9681981b..75cf10c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,6 +67,7 @@ pytest-xdist = "^3.5.0" types-PyYAML = "^6.0.9" msgpack-types = "^0.3" envclasses = "^0.3.1" +jedi = "*" [tool.poetry.extras] msgpack = ["msgpack"] diff --git a/serde/__init__.py b/serde/__init__.py index e62e75ac..b879cbc0 100644 --- a/serde/__init__.py +++ b/serde/__init__.py @@ -23,7 +23,7 @@ from dataclasses import dataclass from collections.abc import Callable -from typing import Optional, overload, Any +from typing import Optional, overload, Any, Type from typing_extensions import dataclass_transform @@ -113,7 +113,7 @@ @overload def serde( - _cls: type[T], + _cls: Type[T], rename_all: Optional[str] = None, reuse_instances_default: bool = True, convert_sets_default: bool = False, @@ -124,7 +124,7 @@ def serde( serialize_class_var: bool = False, class_serializer: Optional[ClassSerializer] = None, class_deserializer: Optional[ClassDeserializer] = None, -) -> type[T]: ... +) -> Type[T]: ... @overload diff --git a/tests/test_code_completion.py b/tests/test_code_completion.py new file mode 100644 index 00000000..a4cb8282 --- /dev/null +++ b/tests/test_code_completion.py @@ -0,0 +1,23 @@ +import jedi + + +def test_jedi() -> None: + source = """ +from serde import serde + +@serde +class Foo: + a: int + b: float + c: str + baz: bool + +foo = Foo(10, 100.0, "foo", True) +""" + source_completion = source + "\n" + "foo." + jedi_script = jedi.Script(source_completion, path="foo.py") + completions = jedi_script.complete(9, len("foo.")) + completions = [comp.name for comp in completions] + assert "a" in completions + assert "b" in completions + assert "c" in completions