[Datetime-SIG] pytz vs. PEP 495 Was: PEP-431/495

Ethan Furman ethan at stoneleaf.us
Mon Aug 24 21:05:37 CEST 2015


On 08/24/2015 10:16 AM, Alexander Belopolsky wrote:> PEP 495 takes a different approach:

> >>> from test.datetimetester import Eastern2
> >>> datetime(2004, 4, 4, 2, first=True, tzinfo=Eastern2).astimezone().isoformat()
> '2004-04-04T03:00:00-04:00'
> >>> datetime(2004, 4, 4, 2, first=False, tzinfo=Eastern2).astimezone().isoformat()
> '2004-04-04T01:00:00-05:00'
>
> A post-PEP 495 timezone conversion faced with a missing time is required to return
>  a valid time.  This is similar to the way C mktime works in most implementations.
> If you give it a struct tm representing a time from a DST gap - it will "normalize"
>  it by changing tm_hour up or down depending on the tm_isdst value.

I would be much happier about this if:

  >>> datetime(2004, 4, 4, 2, first=None, tzinfo=Eastern2).astimezone().isoformat()
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File ".../pytz/tzinfo.py", line 327, in localize
      raise NonExistentTimeError(dt)
  NonExistentTimeError: 2004-04-04 02:00:00

Giving the programmer an easier option to use if they want an exception.

--
~Ethan~


More information about the Datetime-SIG mailing list