1 """Stores properties associated with the class of an object (DEPRECATED).
2
3 This module is deprecated, and is expected to be removed in the next release.
4 If you use this module, please contact the Biopython developers via the
5 mailing lists.
6 """
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
26
29 self.class_property = CreateDict()
30 self.class_property_resolver = CreateDict()
31 self.class_resolver = {}
32
34 try:
35 klass = obj.__class__
36 except AttributeError:
37 raise KeyError("built-in instance")
38
39 return self.resolve_class(klass, property)
40
42
43 try:
44 return self.class_property[klass][property]
45 except KeyError:
46 pass
47
48
49 try:
50 return self.class_property_resolver[klass][property](
51 self, klass, property)
52 except KeyError:
53 pass
54
55
56 try:
57 return self.class_resolver[klass](self, klass, property)
58 except KeyError:
59 pass
60
61
62
63
64
65
66 bases = list(klass.__bases__)
67 while bases:
68 base = bases.pop()
69 try:
70 return self.class_property[base][property]
71 except KeyError:
72 pass
73 try:
74 return self.class_property_resolver[base][property](
75 self, klass, property)
76 except KeyError:
77 pass
78 try:
79 return self.class_resolver[base](self, klass, property)
80 except KeyError:
81 pass
82
83
84 bases[:0] = list(base.__bases__)
85 raise KeyError("cannot find property %s for class %s" \
86 % (property, klass))
87
88
89 default_manager = PropertyManager()
90