| 38 | handler(msg, obj, *args, **kw) |
| 39 | |
| 40 | def _find_set_handler(self, msg, obj): |
| 41 | full_path_for_error = None |
| 42 | for typ in type(obj).__mro__: |
| 43 | if typ in self.set_handlers: |
| 44 | return self.set_handlers[typ] |
| 45 | qname = typ.__qualname__ |
| 46 | modname = getattr(typ, '__module__', '') |
| 47 | full_path = '.'.join((modname, qname)) if modname else qname |
| 48 | if full_path_for_error is None: |
| 49 | full_path_for_error = full_path |
| 50 | if full_path in self.set_handlers: |
| 51 | return self.set_handlers[full_path] |
| 52 | if qname in self.set_handlers: |
| 53 | return self.set_handlers[qname] |
| 54 | name = typ.__name__ |
| 55 | if name in self.set_handlers: |
| 56 | return self.set_handlers[name] |
| 57 | if None in self.set_handlers: |
| 58 | return self.set_handlers[None] |
| 59 | raise KeyError(full_path_for_error) |
| 60 | |
| 61 | |
| 62 | raw_data_manager = ContentManager() |