[Python-checkins] cpython (2.7): Issue #18830: inspect.getclasstree() no more produces duplicated entries even
serhiy.storchaka
python-checkins at python.org
Thu Sep 5 16:37:52 CEST 2013
http://hg.python.org/cpython/rev/408165aced01
changeset: 85542:408165aced01
branch: 2.7
parent: 85533:1a65bb15dedf
user: Serhiy Storchaka <storchaka at gmail.com>
date: Thu Sep 05 17:28:10 2013 +0300
summary:
Issue #18830: inspect.getclasstree() no more produces duplicated entries even
when input list contains duplicates.
files:
Lib/inspect.py | 3 ++-
Lib/test/inspect_fodder.py | 2 ++
Lib/test/test_inspect.py | 19 +++++++++++++++++--
Misc/NEWS | 3 +++
4 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/Lib/inspect.py b/Lib/inspect.py
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -728,7 +728,8 @@
for parent in c.__bases__:
if not parent in children:
children[parent] = []
- children[parent].append(c)
+ if c not in children[parent]:
+ children[parent].append(c)
if unique and parent in classes: break
elif c not in roots:
roots.append(c)
diff --git a/Lib/test/inspect_fodder.py b/Lib/test/inspect_fodder.py
--- a/Lib/test/inspect_fodder.py
+++ b/Lib/test/inspect_fodder.py
@@ -49,6 +49,8 @@
class MalodorousPervert(StupidGit):
pass
+Tit = MalodorousPervert
+
class ParrotDroppings:
pass
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -220,8 +220,23 @@
[('FesteringGob', mod.FesteringGob),
('MalodorousPervert', mod.MalodorousPervert),
('ParrotDroppings', mod.ParrotDroppings),
- ('StupidGit', mod.StupidGit)])
- tree = inspect.getclasstree([cls[1] for cls in classes], 1)
+ ('StupidGit', mod.StupidGit),
+ ('Tit', mod.MalodorousPervert),
+ ])
+ tree = inspect.getclasstree([cls[1] for cls in classes])
+ self.assertEqual(tree,
+ [(mod.ParrotDroppings, ()),
+ [(mod.FesteringGob, (mod.MalodorousPervert,
+ mod.ParrotDroppings))
+ ],
+ (mod.StupidGit, ()),
+ [(mod.MalodorousPervert, (mod.StupidGit,)),
+ [(mod.FesteringGob, (mod.MalodorousPervert,
+ mod.ParrotDroppings))
+ ]
+ ]
+ ])
+ tree = inspect.getclasstree([cls[1] for cls in classes], True)
self.assertEqual(tree,
[(mod.ParrotDroppings, ()),
(mod.StupidGit, ()),
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -32,6 +32,9 @@
Library
-------
+- Issue #18830: inspect.getclasstree() no more produces duplicated entries even
+ when input list contains duplicates.
+
- Issue #18909: Fix _tkinter.tkapp.interpaddr() on Windows 64-bit, don't cast
64-bit pointer to long (32 bits).
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list