1
1
import enum
2
2
import sys
3
3
import types
4
+ from _typeshed import DataclassInstance
4
5
from builtins import type as Type # alias to avoid name clashes with fields named "type"
5
6
from collections .abc import Callable , Iterable , Mapping
6
- from typing import Any , ClassVar , Generic , Protocol , TypeVar , overload
7
+ from typing import Any , Generic , Protocol , TypeVar , overload
7
8
from typing_extensions import Literal , TypeAlias , TypeGuard
8
9
9
10
if sys .version_info >= (3 , 9 ):
@@ -30,10 +31,7 @@ __all__ = [
30
31
if sys .version_info >= (3 , 10 ):
31
32
__all__ += ["KW_ONLY" ]
32
33
33
- class _DataclassInstance (Protocol ):
34
- __dataclass_fields__ : ClassVar [dict [str , Field [Any ]]]
35
-
36
- _DataclassT = TypeVar ("_DataclassT" , bound = _DataclassInstance )
34
+ _DataclassT = TypeVar ("_DataclassT" , bound = DataclassInstance )
37
35
38
36
# define _MISSING_TYPE as an enum within the type stubs,
39
37
# even though that is not really its type at runtime
@@ -49,13 +47,13 @@ if sys.version_info >= (3, 10):
49
47
class KW_ONLY : ...
50
48
51
49
@overload
52
- def asdict (obj : _DataclassInstance ) -> dict [str , Any ]: ...
50
+ def asdict (obj : DataclassInstance ) -> dict [str , Any ]: ...
53
51
@overload
54
- def asdict (obj : _DataclassInstance , * , dict_factory : Callable [[list [tuple [str , Any ]]], _T ]) -> _T : ...
52
+ def asdict (obj : DataclassInstance , * , dict_factory : Callable [[list [tuple [str , Any ]]], _T ]) -> _T : ...
55
53
@overload
56
- def astuple (obj : _DataclassInstance ) -> tuple [Any , ...]: ...
54
+ def astuple (obj : DataclassInstance ) -> tuple [Any , ...]: ...
57
55
@overload
58
- def astuple (obj : _DataclassInstance , * , tuple_factory : Callable [[list [Any ]], _T ]) -> _T : ...
56
+ def astuple (obj : DataclassInstance , * , tuple_factory : Callable [[list [Any ]], _T ]) -> _T : ...
59
57
60
58
if sys .version_info >= (3 , 8 ):
61
59
# cls argument is now positional-only
@@ -223,13 +221,13 @@ else:
223
221
metadata : Mapping [Any , Any ] | None = None ,
224
222
) -> Any : ...
225
223
226
- def fields (class_or_instance : _DataclassInstance | type [_DataclassInstance ]) -> tuple [Field [Any ], ...]: ...
224
+ def fields (class_or_instance : DataclassInstance | type [DataclassInstance ]) -> tuple [Field [Any ], ...]: ...
227
225
@overload
228
- def is_dataclass (obj : _DataclassInstance | type [_DataclassInstance ]) -> Literal [True ]: ...
226
+ def is_dataclass (obj : DataclassInstance | type [DataclassInstance ]) -> Literal [True ]: ...
229
227
@overload
230
- def is_dataclass (obj : type ) -> TypeGuard [type [_DataclassInstance ]]: ...
228
+ def is_dataclass (obj : type ) -> TypeGuard [type [DataclassInstance ]]: ...
231
229
@overload
232
- def is_dataclass (obj : object ) -> TypeGuard [_DataclassInstance | type [_DataclassInstance ]]: ...
230
+ def is_dataclass (obj : object ) -> TypeGuard [DataclassInstance | type [DataclassInstance ]]: ...
233
231
234
232
class FrozenInstanceError (AttributeError ): ...
235
233
0 commit comments