def _patch_original_class(self):
        """
        Apply accumulated methods and return the class.
        """
        cls = self._cls
        base_names = self._base_names

        # Clean class of attribute definitions (`attr.ib()`s).
        if self._delete_attribs:
            for name in self._attr_names:
                if (
                    name not in base_names
                    and getattr(cls, name, None) is not None
                ):
                    try:
                        delattr(cls, name)
                    except AttributeError:
                        # This can happen if a base class defines a class
                        # variable and we want to set an attribute with the
                        # same name by using only a type annotation.
                        pass

        # Attach our dunder methods.
        for name, value in self._cls_dict.items():
            setattr(cls, name, value)

        # Attach __setstate__. This is necessary to clear the hash code
        # cache on deserialization. See issue
        # https://github.com/python-attrs/attrs/issues/482 .
        # Note that this code only handles setstate for dict classes.
        # For slotted classes, see similar code in _create_slots_class .
        if self._cache_hash:
            existing_set_state_method = getattr(cls, "__setstate__", None)
            if existing_set_state_method:
                raise NotImplementedError(
                    "Currently you cannot use hash caching if "
                    "you specify your own __setstate__ method."
                    "See https://github.com/python-attrs/attrs/issues/494 ."
                )

            def cache_hash_set_state(chss_self, _):
                # clear hash code cache
                setattr(chss_self, _hash_cache_field, None)

            setattr(cls, "__setstate__", cache_hash_set_state)

        return cls
def _patch_original_class ( self ) : cls = self . _cls base_names = self . _base_names if self . _delete_attribs : for name in self . _attr_names : if ( name not in base_names and getattr ( cls , name , None ) is not None ) : try : delattr ( cls , name ) except AttributeError : pass for name , value in self . _cls_dict . items ( ) : setattr ( cls , name , value ) if self . _cache_hash : existing_set_state_method = getattr ( cls , "__setstate__" , None ) if existing_set_state_method : raise NotImplementedError ( "Currently you cannot use hash caching if " "you specify your own __setstate__ method." "See https://github.com/python-attrs/attrs/issues/494 ." ) def cache_hash_set_state ( chss_self , _ ) : setattr ( chss_self , _hash_cache_field , None ) setattr ( cls , "__setstate__" , cache_hash_set_state ) return cls
Apply accumulated methods and return the class.