Skip to content

bpo-22005: Fixed unpickling instances of datetime classes pickled by Python 2. #794

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed

Conversation

serhiy-storchaka
Copy link
Member

@serhiy-storchaka serhiy-storchaka commented Mar 23, 2017

errors='surrogateescape' should be used for successful decoding.

encoding='latin1' should be used for successful decoding.

https://bugs.python.org/issue22005

…Python 2.

errors='surrogateescape' should be used for successful decoding.
@mention-bot
Copy link

@serhiy-storchaka, thanks for your PR! By analyzing the history of the files in this pull request, we identified @abalkin, @tim-one and @birkenfeld to be potential reviewers.

Lib/datetime.py Outdated
1 <= year[2] <= 12:
if (month is None and
isinstance(year, (bytes, str)) and len(year) == 4 and
1 <= ord(year[2:3])&0xFF <= 12):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand how the last condition works. Is it supposed to allow str year with year[2] outside of 8-bit range?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the third byte is in the range 0x00-0x7f, it is decoded to the character in the range U+0000-U+007f. If it is in the range 0x80-0xff, it is decoded to the character in the range U+dc80-U+dcff.

Hmm, but in the latter case ord(year[2:3])&0xFF >= 0x80, and that condition is false. &0xFF is not needed in this case. But '&0x7F' in other two cases are needed.

@serhiy-storchaka
Copy link
Member Author

Tests on Travis CI are failed for unrelated cause.

@serhiy-storchaka
Copy link
Member Author

The Travis CI build is failed due to some glitches. For a copy of this PR #11017 all tests are passed.

@serhiy-storchaka serhiy-storchaka deleted the datetime-compat-unpickle branch December 7, 2018 11:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
awaiting review type-bug An unexpected behavior, bug, or error
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants