• Paul Ganssle's avatar
    bpo-34454: Clean up datetime.fromisoformat surrogate handling (GH-8959) · 3df85404
    Paul Ganssle authored
    * 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.
    3df85404
_datetimemodule.c 207 KB