code: def _filter_attrs(cls, attrs):
          
          if cls.__attr_whitelist__:
              whitelist = cls.__attr_accessible__ - cls.__attr_protected__
              return {k: v for k, v in attrs.items() if k in whitelist}
          else:
              blacklist = cls.__attr_protected__ - cls.__attr_accessible__
              return {k: v for k, v in attrs.items() if k not in blacklist}
docs: attrs: { attr_name: attr_value }
          if __attr_whitelist__ is True:
              only attr in __attr_accessible__ AND not in __attr_protected__
              will pass
          else:
              only attr not in __attr_protected__ OR in __attr_accessible__
              will pass