def __setup_subclass()

in testslide/strict_mock.py [0:0]


    def __setup_subclass(self):
        """
        When StrictMock is subclassed, any attributes defined at the subclass
        will override any of StrictMock's validations. In order to overcome
        this, for attributes that makes sense, we set them at StrictMock's
        dynamically created subclass from __new__ using __setattr__, so that
        all validations work.
        """
        if type(self).mro()[1] == StrictMock:
            return
        for klass in type(self).mro()[1:]:
            if klass == StrictMock:
                break
            for name in klass.__dict__.keys():
                if name in [
                    "__doc__",
                    "__init__",
                    "__module__",
                ]:
                    continue
                # https://docs.python.org/3/tutorial/classes.html#tut-private
                if name.startswith(f"_{type(self).__name__}__") and not name.endswith(
                    "__"
                ):
                    continue
                if name == "__hash__" and klass.__dict__["__hash__"] is None:
                    continue
                StrictMock.__setattr__(self, name, getattr(self, name))