Update a class object.
(self, oldclass, newclass)
| 390 | return oldmeth |
| 391 | |
| 392 | def _update_class(self, oldclass, newclass): |
| 393 | """Update a class object.""" |
| 394 | olddict = oldclass.__dict__ |
| 395 | newdict = newclass.__dict__ |
| 396 | |
| 397 | oldnames = set(olddict) |
| 398 | newnames = set(newdict) |
| 399 | |
| 400 | for name in newnames - oldnames: |
| 401 | setattr(oldclass, name, newdict[name]) |
| 402 | notify_info0("Added:", name, "to", oldclass) |
| 403 | self.found_change = True |
| 404 | |
| 405 | # Note: not removing old things... |
| 406 | # for name in oldnames - newnames: |
| 407 | # notify_info('Removed:', name, 'from', oldclass) |
| 408 | # delattr(oldclass, name) |
| 409 | |
| 410 | for name in (oldnames & newnames) - set(["__dict__", "__doc__"]): |
| 411 | self._update(oldclass, name, olddict[name], newdict[name], is_class_namespace=True) |
| 412 | |
| 413 | old_bases = getattr(oldclass, "__bases__", None) |
| 414 | new_bases = getattr(newclass, "__bases__", None) |
| 415 | if str(old_bases) != str(new_bases): |
| 416 | notify_error("Changing the hierarchy of a class is not supported. %s may be inconsistent." % (oldclass,)) |
| 417 | |
| 418 | self._handle_namespace(oldclass, is_class_namespace=True) |
| 419 | |
| 420 | def _update_classmethod(self, oldcm, newcm): |
| 421 | """Update a classmethod update.""" |
no test coverage detected