1# mode: run
2# tag: pyclass
3
4class A(object):
5    x = 1
6
7class B(object):
8    x = 2
9
10
11def cond_if_bases(x):
12    """
13    >>> c = cond_if_bases(True)
14    >>> c().p
15    5
16    >>> c().x
17    1
18    >>> c = cond_if_bases(False)
19    >>> c().p
20    5
21    >>> c().x
22    2
23    """
24    class PyClass(A if x else B):
25        p = 5
26    return PyClass
27
28
29def make_subclass(*bases):
30    """
31    >>> cls = make_subclass(list)
32    >>> issubclass(cls, list) or cls.__mro__
33    True
34
35    >>> class Cls(object): pass
36    >>> cls = make_subclass(Cls, list)
37    >>> issubclass(cls, list) or cls.__mro__
38    True
39    >>> issubclass(cls, Cls) or cls.__mro__
40    True
41    """
42    # GH-3338
43    class MadeClass(*bases):
44        pass
45    return MadeClass
46