<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def localize_datetime(datetime_obj, tz=pytz.utc):
 """Converts a naive or UTC-localized date into the provided timezone. :param datetime_obj: The datetime object. :type datetime_obj: datetime :param tz: The timezone. If blank or None, UTC is used. :type tz: datetime.tzinfo :return: The localized datetime object. :rtype: datetime """

    if not datetime_obj.tzinfo:
        return tz.localize(datetime_obj)
    else:
        try:
            return datetime_obj.astimezone(tz)
        except OverflowError:
            if datetime_obj < datetime(2, 1, 1, tzinfo=pytz.utc):
                return MIN_DATE.astimezone(tz)
            return MAX_DATE.astimezone(tz)