MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / _update_class

Method _update_class

_pydevd_bundle/pydevd_reload.py:392–418  ·  view source on GitHub ↗

Update a class object.

(self, oldclass, newclass)

Source from the content-addressed store, hash-verified

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."""

Callers 1

_updateMethod · 0.95

Calls 4

_updateMethod · 0.95
_handle_namespaceMethod · 0.95
notify_info0Function · 0.85
notify_errorFunction · 0.85

Tested by

no test coverage detected