Provide special type for replace usages on dataclasses (PY-28957)

This commit is contained in:
Semyon Proshev
2018-03-15 17:24:00 +03:00
parent 610c1b70c3
commit f5550fbc81
10 changed files with 244 additions and 5 deletions

View File

@@ -0,0 +1,35 @@
from dataclasses import dataclass, field, InitVar, replace
@dataclass
class A:
a: int
b: str = "str"
replace(A(1), <arg1>)
@dataclass
class B:
a: int
b: str = field(default="str", init=False)
replace(B(1), <arg2>)
@dataclass
class C:
a: int
b: InitVar[str] = "str"
replace(C(1), <arg3>)
class D:
pass
replace(D(), <arg4>)

View File

@@ -0,0 +1,20 @@
class _InitVarMeta(type):
def __getitem__(self, params):
return self
class InitVar(metaclass=_InitVarMeta):
pass
def dataclass(_cls=None, *, init=True, repr=True, eq=True, order=False,
unsafe_hash=False, frozen=False):
pass
def field(*, default=MISSING, default_factory=MISSING, init=True, repr=True,
hash=None, compare=True, metadata=None):
pass
def replace(obj, **changes):
pass