Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 465e60e

Browse files
Issue #22033: Reprs of most Python implemened classes now contain actual
class name instead of hardcoded one.
1 parent 54701f3 commit 465e60e

24 files changed

Lines changed: 102 additions & 74 deletions

File tree

Lib/_pyio.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -808,13 +808,14 @@ def __getstate__(self):
808808
.format(self.__class__.__name__))
809809

810810
def __repr__(self):
811-
clsname = self.__class__.__name__
811+
modname = self.__class__.__module__
812+
clsname = self.__class__.__qualname__
812813
try:
813814
name = self.name
814815
except AttributeError:
815-
return "<_pyio.{0}>".format(clsname)
816+
return "<{}.{}>".format(modname, clsname)
816817
else:
817-
return "<_pyio.{0} name={1!r}>".format(clsname, name)
818+
return "<{}.{} name={!r}>".format(modname, clsname, name)
818819

819820
### Lower-level APIs ###
820821

@@ -1635,7 +1636,8 @@ def __init__(self, buffer, encoding=None, errors=None, newline=None,
16351636
# - "chars_..." for integer variables that count decoded characters
16361637

16371638
def __repr__(self):
1638-
result = "<_pyio.TextIOWrapper"
1639+
result = "<{}.{}".format(self.__class__.__module__,
1640+
self.__class__.__qualname__)
16391641
try:
16401642
name = self.name
16411643
except AttributeError:

Lib/concurrent/futures/_base.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -302,17 +302,20 @@ def __repr__(self):
302302
with self._condition:
303303
if self._state == FINISHED:
304304
if self._exception:
305-
return '<Future at %s state=%s raised %s>' % (
306-
hex(id(self)),
305+
return '<%s at %#x state=%s raised %s>' % (
306+
self.__class__.__name__,
307+
id(self),
307308
_STATE_TO_DESCRIPTION_MAP[self._state],
308309
self._exception.__class__.__name__)
309310
else:
310-
return '<Future at %s state=%s returned %s>' % (
311-
hex(id(self)),
311+
return '<%s at %#x state=%s returned %s>' % (
312+
self.__class__.__name__,
313+
id(self),
312314
_STATE_TO_DESCRIPTION_MAP[self._state],
313315
self._result.__class__.__name__)
314-
return '<Future at %s state=%s>' % (
315-
hex(id(self)),
316+
return '<%s at %#x state=%s>' % (
317+
self.__class__.__name__,
318+
id(self),
316319
_STATE_TO_DESCRIPTION_MAP[self._state])
317320

318321
def cancel(self):

Lib/datetime.py

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -414,15 +414,19 @@ def __new__(cls, days=0, seconds=0, microseconds=0,
414414

415415
def __repr__(self):
416416
if self._microseconds:
417-
return "%s(%d, %d, %d)" % ('datetime.' + self.__class__.__name__,
418-
self._days,
419-
self._seconds,
420-
self._microseconds)
417+
return "%s.%s(%d, %d, %d)" % (self.__class__.__module__,
418+
self.__class__.__qualname__,
419+
self._days,
420+
self._seconds,
421+
self._microseconds)
421422
if self._seconds:
422-
return "%s(%d, %d)" % ('datetime.' + self.__class__.__name__,
423-
self._days,
424-
self._seconds)
425-
return "%s(%d)" % ('datetime.' + self.__class__.__name__, self._days)
423+
return "%s.%s(%d, %d)" % (self.__class__.__module__,
424+
self.__class__.__qualname__,
425+
self._days,
426+
self._seconds)
427+
return "%s.%s(%d)" % (self.__class__.__module__,
428+
self.__class__.__qualname__,
429+
self._days)
426430

427431
def __str__(self):
428432
mm, ss = divmod(self._seconds, 60)
@@ -700,10 +704,11 @@ def __repr__(self):
700704
>>> repr(dt)
701705
'datetime.datetime(2010, 1, 1, 0, 0, tzinfo=datetime.timezone.utc)'
702706
"""
703-
return "%s(%d, %d, %d)" % ('datetime.' + self.__class__.__name__,
704-
self._year,
705-
self._month,
706-
self._day)
707+
return "%s.%s(%d, %d, %d)" % (self.__class__.__module__,
708+
self.__class__.__qualname__,
709+
self._year,
710+
self._month,
711+
self._day)
707712
# XXX These shouldn't depend on time.localtime(), because that
708713
# clips the usable dates to [1970 .. 2038). At least ctime() is
709714
# easily done without using strftime() -- that's better too because
@@ -1155,8 +1160,9 @@ def __repr__(self):
11551160
s = ", %d" % self._second
11561161
else:
11571162
s = ""
1158-
s= "%s(%d, %d%s)" % ('datetime.' + self.__class__.__name__,
1159-
self._hour, self._minute, s)
1163+
s= "%s.%s(%d, %d%s)" % (self.__class__.__module__,
1164+
self.__class__.__qualname__,
1165+
self._hour, self._minute, s)
11601166
if self._tzinfo is not None:
11611167
assert s[-1:] == ")"
11621168
s = s[:-1] + ", tzinfo=%r" % self._tzinfo + ")"
@@ -1569,8 +1575,9 @@ def __repr__(self):
15691575
del L[-1]
15701576
if L[-1] == 0:
15711577
del L[-1]
1572-
s = ", ".join(map(str, L))
1573-
s = "%s(%s)" % ('datetime.' + self.__class__.__name__, s)
1578+
s = "%s.%s(%s)" % (self.__class__.__module__,
1579+
self.__class__.__qualname__,
1580+
", ".join(map(str, L)))
15741581
if self._tzinfo is not None:
15751582
assert s[-1:] == ")"
15761583
s = s[:-1] + ", tzinfo=%r" % self._tzinfo + ")"
@@ -1857,10 +1864,12 @@ def __repr__(self):
18571864
if self is self.utc:
18581865
return 'datetime.timezone.utc'
18591866
if self._name is None:
1860-
return "%s(%r)" % ('datetime.' + self.__class__.__name__,
1861-
self._offset)
1862-
return "%s(%r, %r)" % ('datetime.' + self.__class__.__name__,
1863-
self._offset, self._name)
1867+
return "%s.%s(%r)" % (self.__class__.__module__,
1868+
self.__class__.__qualname__,
1869+
self._offset)
1870+
return "%s.%s(%r, %r)" % (self.__class__.__module__,
1871+
self.__class__.__qualname__,
1872+
self._offset, self._name)
18641873

18651874
def __str__(self):
18661875
return self.tzname(None)

Lib/doctest.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -533,8 +533,9 @@ def __repr__(self):
533533
examples = '1 example'
534534
else:
535535
examples = '%d examples' % len(self.examples)
536-
return ('<DocTest %s from %s:%s (%s)>' %
537-
(self.name, self.filename, self.lineno, examples))
536+
return ('<%s %s from %s:%s (%s)>' %
537+
(self.__class__.__name__,
538+
self.name, self.filename, self.lineno, examples))
538539

539540
def __eq__(self, other):
540541
if type(self) is not type(other):

Lib/email/headerregistry.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,8 @@ def addr_spec(self):
8080
return lp
8181

8282
def __repr__(self):
83-
return "Address(display_name={!r}, username={!r}, domain={!r})".format(
83+
return "{}(display_name={!r}, username={!r}, domain={!r})".format(
84+
self.__class__.__name__,
8485
self.display_name, self.username, self.domain)
8586

8687
def __str__(self):
@@ -131,7 +132,8 @@ def addresses(self):
131132
return self._addresses
132133

133134
def __repr__(self):
134-
return "Group(display_name={!r}, addresses={!r}".format(
135+
return "{}(display_name={!r}, addresses={!r}".format(
136+
self.__class__.__name__,
135137
self.display_name, self.addresses)
136138

137139
def __str__(self):

Lib/fractions.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,8 @@ def denominator(a):
280280

281281
def __repr__(self):
282282
"""repr(self)"""
283-
return ('Fraction(%s, %s)' % (self._numerator, self._denominator))
283+
return '%s(%s, %s)' % (self.__class__.__name__,
284+
self._numerator, self._denominator)
284285

285286
def __str__(self):
286287
"""str(self)"""

Lib/http/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1334,7 +1334,8 @@ def __repr__(self):
13341334
e = ', %i more expected' % self.expected
13351335
else:
13361336
e = ''
1337-
return 'IncompleteRead(%i bytes read%s)' % (len(self.partial), e)
1337+
return '%s(%i bytes read%s)' % (self.__class__.__name__,
1338+
len(self.partial), e)
13381339
def __str__(self):
13391340
return repr(self)
13401341

Lib/http/cookiejar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@ def __repr__(self):
805805
args.append("%s=%s" % (name, repr(attr)))
806806
args.append("rest=%s" % repr(self._rest))
807807
args.append("rfc2109=%s" % repr(self.rfc2109))
808-
return "Cookie(%s)" % ", ".join(args)
808+
return "%s(%s)" % (self.__class__.__name__, ", ".join(args))
809809

810810

811811
class CookiePolicy:

Lib/idlelib/WidgetRedirector.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,9 @@ def __init__(self, widget):
4747
tk.createcommand(w, self.dispatch)
4848

4949
def __repr__(self):
50-
return "WidgetRedirector(%s<%s>)" % (self.widget.__class__.__name__,
51-
self.widget._w)
50+
return "%s(%s<%s>)" % (self.__class__.__name__,
51+
self.widget.__class__.__name__,
52+
self.widget._w)
5253

5354
def close(self):
5455
"Unregister operations and revert redirection created by .__init__."
@@ -142,7 +143,8 @@ def __init__(self, redir, operation):
142143
self.orig_and_operation = (redir.orig, operation)
143144

144145
def __repr__(self):
145-
return "OriginalCommand(%r, %r)" % (self.redir, self.operation)
146+
return "%s(%r, %r)" % (self.__class__.__name__,
147+
self.redir, self.operation)
146148

147149
def __call__(self, *args):
148150
return self.tk_call(self.orig_and_operation + args)

Lib/multiprocessing/dummy/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ def __repr__(self):
8686
if not name.startswith('_'):
8787
temp.append('%s=%r' % (name, value))
8888
temp.sort()
89-
return 'Namespace(%s)' % str.join(', ', temp)
89+
return '%s(%s)' % (self.__class__.__name__, ', '.join(temp))
9090

9191
dict = dict
9292
list = list

0 commit comments

Comments
 (0)