[Python-checkins] bpo-33502: dataclass._Dataclassparams repr: use repr of each member. (GH-6812)
Eric V. Smith
webhook-mailer at python.org
Mon May 14 17:16:55 EDT 2018
https://github.com/python/cpython/commit/3059042410dce69806b94be72d5c8055d616f3a3
commit: 3059042410dce69806b94be72d5c8055d616f3a3
branch: master
author: Eric V. Smith <ericvsmith at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-05-14T17:16:52-04:00
summary:
bpo-33502: dataclass._Dataclassparams repr: use repr of each member. (GH-6812)
files:
A f.py
A j.py
A t.py
A x.py
M Lib/dataclasses.py
diff --git a/Lib/dataclasses.py b/Lib/dataclasses.py
index c60eeaa58368..2ce6a02dcd7a 100644
--- a/Lib/dataclasses.py
+++ b/Lib/dataclasses.py
@@ -274,12 +274,12 @@ def __init__(self, init, repr, eq, order, unsafe_hash, frozen):
def __repr__(self):
return ('_DataclassParams('
- f'init={self.init},'
- f'repr={self.repr},'
- f'eq={self.eq},'
- f'order={self.order},'
- f'unsafe_hash={self.unsafe_hash},'
- f'frozen={self.frozen}'
+ f'init={self.init!r},'
+ f'repr={self.repr!r},'
+ f'eq={self.eq!r},'
+ f'order={self.order!r},'
+ f'unsafe_hash={self.unsafe_hash!r},'
+ f'frozen={self.frozen!r}'
')')
diff --git a/f.py b/f.py
new file mode 100644
index 000000000000..02a3668c10ca
--- /dev/null
+++ b/f.py
@@ -0,0 +1,12 @@
+from __future__ import annotations
+from dataclasses import dataclass
+from typing import List
+from typing import ClassVar as CV
+
+ at dataclass
+class A:
+ a: List[str]
+
+ at dataclass
+class B(A):
+ b: CV[int]
diff --git a/j.py b/j.py
new file mode 100644
index 000000000000..9551702cfe9c
--- /dev/null
+++ b/j.py
@@ -0,0 +1,15 @@
+
+class X:
+ def __init__(self, value):
+ self.value = value
+ def __str__(self):
+ return str(self.value)
+ def __format__(self, fmt):
+ assert fmt[0] == '='
+ self.value = eval(fmt[1:])
+ return ''
+
+x = X(3)
+print(x)
+f'{x:=4}' # Behold!
+print(x)
diff --git a/t.py b/t.py
new file mode 100644
index 000000000000..7484cf9758b3
--- /dev/null
+++ b/t.py
@@ -0,0 +1,20 @@
+from dataclasses import *
+
+class D:
+ """A descriptor class that knows its name."""
+ def __set_name__(self, owner, name):
+ self.name = name
+ def __get__(self, instance, owner):
+ if instance is not None:
+ return 1
+ return self
+
+from dataclasses import *
+
+ at dataclass
+class C:
+ d: int = field(default=D(), init=False)
+
+ at dataclass
+class E(C):
+ e: int = field(default=D(), init=False)
diff --git a/x.py b/x.py
new file mode 100644
index 000000000000..2b78f3e96fc7
--- /dev/null
+++ b/x.py
@@ -0,0 +1,31 @@
+#from __future__ import annotations
+from typing import ClassVar, Dict, get_type_hints
+from dataclasses import *
+
+class Starship:
+ stats: ClassVar[Dict[str, int]] = {}
+
+#print(get_type_hints(Starship))
+
+#class A:
+# a: Dict[int, C]
+
+#print(get_type_hints(A))
+
+cv = [ClassVar[int]]
+
+ at dataclass
+class C:
+ CVS = [ClassVar[str]]
+ a: cv[0]
+ b: 'C'
+ c: 'CVS[0]'
+ x: 'ClassVar["int"]'
+ y: 'ClassVar[C]'
+
+print()
+print(C.__annotations__)
+print(C.__dataclass_fields__)
+
+
+#print(get_type_hints(C))
More information about the Python-checkins
mailing list