def __new__(cls, name, bases, attrs):
		if not [b for b in bases if isinstance(b, HideMetaOpts)]:
			return super(HideMetaOpts, cls).__new__(cls, name, bases, attrs)
		
		else:
			meta_opts = deepcopy(cls.default_meta_opts)
			
			# Deferred fields won't have our model's Meta.
			if 'Meta' in attrs and attrs['Meta'].__module__ != 'django.db.models.query_utils':
				meta = attrs.get('Meta')
			
			else:
				# Meta is at a class level, and could be in any of the bases.
				for base in bases:
					meta = getattr(base, '_meta', None)
					
					if meta:
						break
			
			# If there's no _meta then we're falling back to defaults.
			if meta:
				for opt, value in vars(meta).items():
					if models.options.DEFAULT_NAMES not in opt and (cls.hide_unknown_opts or opt in meta_opts):
						meta_opts[opt] = value
						delattr(meta, opt)
			
			new_class = super(HideMetaOpts, cls).__new__(cls, name, bases, attrs)
			
			if meta:
				for opt in meta_opts:
					setattr(meta, opt, meta_opts[opt])
			
			# We theoretically don't have to set this twice, but just in case.
			for opt in meta_opts:
				setattr(new_class._meta, opt, meta_opts[opt])
			
			return new_class


#class UpdateTogetherModel(BaseChangeTracker, models.Model, six.with_metaclass(HideMetaOpts)):
#	"""
#	A replacement for :class:`~django.db.models.Model` which allows you to
#	specify the ``Meta`` attribute ``update_together``: a
#	:py:obj:`list`/:py:obj:`tuple` of :py:obj:`list`\s/:py:obj:`tuple`\s
#	defining fields that should always be updated together if any of
#	them change.
#	
#	"""
#	
#	def save(self, *args, **kwargs):
#		if 'update_fields' in kwargs:
#			update_fields = set(kwargs['update_fields'])
#			
#			for field in kwargs['update_fields']:
#				update_fields.update(self._meta.update_together.get(field, []))
#			
#			kwargs['update_fields'] = list(update_fields)
#		
#		super(UpdateTogetherModel, self).save(*args, **kwargs)
#	
#	class Meta:
#		abstract = True
dataset/ETHPy150Open karanlyons/django-save-the-change/save_the_change/mixins.py/HideMetaOpts.__new__/swapped operands of `not in`