New submission from Connor Wolf: I'm using plistlib to process plist files produced by an iphone app. Somehow, the application is generating plist files with a absolute date value along the lines of `0000-12-30T00:00:00Z`.
This is a valid date, and the apple plist libraries can handle this without issue. However, it causes a ValueError if you load a plist containing it. Minimal example: python file: ``` import plistlib test = plistlib.readPlist('./test.plist') ``` plist file: ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Test</key> <date>0000-12-30T00:00:00Z</date> </dict> </plist> ``` This fails on both python3 and python2, with the exact same error: ``` herp@mainnas:/media/Storage/Scripts/pFail$ python3 test.py Traceback (most recent call last): File "test.py", line 3, in <module> test = plistlib.readPlist('./test.plist') File "/usr/lib/python3.4/plistlib.py", line 164, in readPlist dict_type=_InternalDict) File "/usr/lib/python3.4/plistlib.py", line 995, in load return p.parse(fp) File "/usr/lib/python3.4/plistlib.py", line 325, in parse self.parser.ParseFile(fileobj) File "/usr/lib/python3.4/plistlib.py", line 337, in handle_end_element handler() File "/usr/lib/python3.4/plistlib.py", line 413, in end_date self.add_object(_date_from_string(self.get_data())) File "/usr/lib/python3.4/plistlib.py", line 291, in _date_from_string return datetime.datetime(*lst) ValueError: year is out of range herp@mainnas:/media/Storage/Scripts/pFail$ python test.py Traceback (most recent call last): File "test.py", line 3, in <module> test = plistlib.readPlist('./test.plist') File "/usr/lib/python2.7/plistlib.py", line 78, in readPlist rootObject = p.parse(pathOrFile) File "/usr/lib/python2.7/plistlib.py", line 406, in parse parser.ParseFile(fileobj) File "/usr/lib/python2.7/plistlib.py", line 418, in handleEndElement handler() File "/usr/lib/python2.7/plistlib.py", line 474, in end_date self.addObject(_dateFromString(self.getData())) File "/usr/lib/python2.7/plistlib.py", line 198, in _dateFromString return datetime.datetime(*lst) ValueError: year is out of range herp@mainnas:/media/Storage/Scripts/pFail$ ``` ---------- components: Library (Lib) messages: 232107 nosy: Connor.Wolf priority: normal severity: normal status: open title: Plistlib fails on certain valid plist values type: behavior versions: Python 2.7, Python 3.4 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue22993> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com