1import abc
2
3import six
4
5
6class A(object):
7    pass
8
9
10class B(A):
11    pass
12
13
14class C(B):
15    pass
16
17
18class D(object):
19    pass
20
21
22class Mixed(A, D):
23    pass
24
25
26class Abstract(six.with_metaclass(abc.ABCMeta, object)):
27    pass
28
29
30class Concrete(object):
31    pass
32
33
34class ConcreteSubclass(Concrete):
35    pass
36
37
38for typ in (A, B, C, D, Mixed, Abstract, Concrete, ConcreteSubclass):
39    typ.__module__ = 'dummies'
40
41
42Abstract.register(Concrete)
43