  def make_naive(value, timezone):
      """
      Makes an aware datetime.datetime naive in a given time zone.
      """
      if is_naive(value):
          raise ValueError("make_naive expects an aware value, got %s" % value)
      value = value.astimezone(timezone)
      if hasattr(timezone, 'normalize'):
          # available for pytz time zones
          value = timezone.normalize(value)
      return value.replace(tzinfo=None)
 
</s> remove         # available for pytz time zones
 </s> add         # This method is available for pytz time zones. </s> remove     if is_aware(value):
        raise ValueError("make_aware expects a naive value, got %s" % value)
 </s> add  </s> remove         # may be wrong around DST changes
 </s> add         # Check that we won't overwrite the timezone of an aware datetime.
        if is_aware(value):
            raise ValueError(
                    "make_aware expects a naive datetime, got %s" % value)
        # This may be wrong around DST changes! </s> remove         # available for pytz time zones
 </s> add         # This method is available for pytz time zones.
    # If `value` is naive, astimezone() will raise a ValueError,
    # so we don't need to perform a redundant check.
  def make_naive(value, timezone):
      """
      Makes an aware datetime.datetime naive in a given time zone.
      """
    # If `value` is naive, astimezone() will raise a ValueError,
    # so we don't need to perform a redundant check.
    # If `value` is naive, astimezone() will raise a ValueError,
    # so we don't need to perform a redundant check.
      value = value.astimezone(timezone)
      if hasattr(timezone, 'normalize'):
          # available for pytz time zones
          value = timezone.normalize(value)
      return value.replace(tzinfo=None)
keep keep keep keep replace replace keep keep keep keep keep
 Optimized make_aware/naive by removing redundant checks. Refs #22625.

Also added tests with pytz and removed misplaced tests. 
django/utils/timezone.py