inconsistencia al cambiar entre zonas horarias en python
Tengo un objeto datetime creado así:
tm = datetime.datetime.strptime('2010 Aug 04 14:15:16', '%Y %b %d %H:%M:%S')
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16)
Luego configuro la zona horaria de esta manera:
tm.replace(tzinfo=pytz.timezone('UTC'))
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16, tzinfo=<UTC>)
Finalmente, cambio la zona horaria a EE. UU./Pacífico de esta manera:
>>> tm = tm.astimezone(pytz.timezone('US/Pacific'))
>>> tm
datetime.datetime(2010, 8, 4, 7, 15, 16, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)
Esto es correcto. Pero si tuviera que ir en la otra dirección:
>>> tm = tm.replace(tzinfo =pytz.timezone('US/Pacific'))
>>> tm
datetime.datetime(2010, 8, 4, 14, 15, 16, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>)
Como puede ver, el uso de replace () con la zona horaria PST supone incorrectamente que no es horario de verano. Por lo tanto, cuando convierto a UTC, agrega 8 horas en lugar de 7.
¿Por qué está haciendo esto y cómo lo cambio para que haga lo que quiero (realizar correctamente el horario de verano o no)?