-
Notifications
You must be signed in to change notification settings - Fork 2
Closed
Description
This works:
import dataclasses
import typing as T
from validobj.validation import parse_input
@dataclasses.dataclass
class CmdlineConfig:
"""
Contents of config settings passed in through a build tool
"""
build_dir: T.Optional[str] = None
editable_verbose: bool = False
# dist_args: T.Union[None, str, T.List[str]] = None
setup_args: T.Union[None, str, T.List[str]] = None
compile_args: T.Union[None, str, T.List[str]] = None
install_args: T.Union[None, str, T.List[str]] = None
nope = {"setup_args": "ohai"}
print(parse_input(nope, CmdlineConfig))
But adding from __future__ import annotations to the top of the file does not work:
$ python t.py
Traceback (most recent call last):
File "t.py", line 25, in <module>
print(parse_input(nope, CmdlineConfig))
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
File "python3.13/site-packages/validobj/validation.py", line 491, in parse_input
return _parse_dataclass(value, spec)
File "python3.13/site-packages/validobj/validation.py", line 220, in _parse_dataclass
res[k] = parse_input(v, field_dict[k])
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
File "python3.13/site-packages/validobj/validation.py", line 510, in parse_input
if isinstance(value, spec):
~~~~~~~~~~^^^^^^^^^^^^^
TypeError: isinstance() arg 2 must be a type, a tuple of types, or a unionMetadata
Metadata
Assignees
Labels
No labels