diff -urpN a/Lib/types.py b/Lib/types.py --- a/Lib/types.py 2014-05-18 22:19:39.000000000 -0700 +++ b/Lib/types.py 2014-11-29 11:55:05.131180321 -0800 @@ -88,9 +88,9 @@ def _calculate_meta(meta, bases): winner = meta for base in bases: base_meta = type(base) - if issubclass(winner, base_meta): + if type.__subclasscheck__(base_meta, winner): continue - if issubclass(base_meta, winner): + if type.__subclasscheck__(winner, base_meta): winner = base_meta continue # else: