I think I got it:
pytz.utc.localize(utc_time, is_dst=None).astimezone(tz)
This line first converts the naive (time zone unaware) utc_time
datetime
object to a datetime
object that contains a timezone (UTC). Then it uses the astimezone
function to adjust the time according to the requested time zone.