]> granicus.if.org Git - python/commit
bpo-34454: Clean up datetime.fromisoformat surrogate handling (GH-8959)
authorPaul Ganssle <pganssle@users.noreply.github.com>
Mon, 22 Oct 2018 16:32:52 +0000 (12:32 -0400)
committerVictor Stinner <vstinner@redhat.com>
Mon, 22 Oct 2018 16:32:52 +0000 (18:32 +0200)
commit3df85404d4bf420db3362eeae1345f2cad948a71
treea18de8801d592700411ed1c4a282c0180270ff05
parent5a95ba29da7e55fe6a8777b6ea4c68f60cf0e407
bpo-34454: Clean up datetime.fromisoformat surrogate handling (GH-8959)

* Use _PyUnicode_Copy in sanitize_isoformat_str

* Use repr in fromisoformat error message

This reverses commit 67b74a98b2 per Serhiy Storchaka's suggestion:

     I suggested to use %R in the error message because including the raw
     string can be confusing in the case of empty string, or string
     containing trailing whitespaces, invisible or unprintable characters.

We agree that it is better to change both the C and pure Python versions
to use repr.

* Retain non-sanitized dtstr for error printing

This does not create an extra string, it just holds on to a reference to
the original input string for purposes of creating the error message.

* PEP 7 fixes to from_isoformat

* Separate handling of Unicode and other errors

In the initial implementation, errors other than encoding errors would
both raise an error indicating an invalid format, which would not be
true for errors like MemoryError.

* Drop needs_decref from _sanitize_isoformat_str

Instead _sanitize_isoformat_str returns a new reference, even to the
original string.
Lib/datetime.py
Lib/test/datetimetester.py
Modules/_datetimemodule.c