diff options
| author | Ivan Levkivskyi <levkivskyi@gmail.com> | 2018-03-31 13:41:17 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-03-31 13:41:17 +0100 |
| commit | 5a7092de1226a95a50f0f384eea8ddb288959249 (patch) | |
| tree | 807e9531024aea7af14e1efd02d2c8d11979d35c /Lib/dataclasses.py | |
| parent | 233de021d915364bd3daee921d1d96d50d46d7fe (diff) | |
| download | cpython-git-5a7092de1226a95a50f0f384eea8ddb288959249.tar.gz | |
Allow dynamic creation of generic dataclasses (GH-6319)
Diffstat (limited to 'Lib/dataclasses.py')
| -rw-r--r-- | Lib/dataclasses.py | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py index bd7252c683..04e07f8cf8 100644 --- a/Lib/dataclasses.py +++ b/Lib/dataclasses.py @@ -1004,7 +1004,9 @@ def make_dataclass(cls_name, fields, *, bases=(), namespace=None, init=True, anns[name] = tp namespace['__annotations__'] = anns - cls = type(cls_name, bases, namespace) + # We use `types.new_class()` instead of simply `type()` to allow dynamic creation + # of generic dataclassses. + cls = types.new_class(cls_name, bases, {}, lambda ns: ns.update(namespace)) return dataclass(cls, init=init, repr=repr, eq=eq, order=order, unsafe_hash=unsafe_hash, frozen=frozen) |
