diff options
author | Tal Einat <taleinat+github@gmail.com> | 2018-09-10 16:11:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-10 16:11:04 +0300 |
commit | 54752533b2ed1c898ffe5ec2e795c6910ee46a39 (patch) | |
tree | 02d254c2e1ed9865fe2c05086ba7dcb11d2b750d /Lib/uuid.py | |
parent | Test dict values iterator pickling with pickle.HIGHEST_PROTOCOL. (GH-9052) (diff) | |
download | cpython-54752533b2ed1c898ffe5ec2e795c6910ee46a39.tar.gz cpython-54752533b2ed1c898ffe5ec2e795c6910ee46a39.tar.bz2 cpython-54752533b2ed1c898ffe5ec2e795c6910ee46a39.zip |
bpo-30977: rework code changes according to post-merge code review (GH-9106)
also mention the change and its consequences in What's New
Diffstat (limited to 'Lib/uuid.py')
-rw-r--r-- | Lib/uuid.py | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/Lib/uuid.py b/Lib/uuid.py index 51538822151..073ca711ab4 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -207,26 +207,19 @@ class UUID: object.__setattr__(self, 'is_safe', is_safe) def __getstate__(self): - d = {attr: getattr(self, attr) for attr in self.__slots__} - # is_safe is a SafeUUID instance. Return just its value, so that - # it can be unpickled in older Python versions without SafeUUID. - d['is_safe'] = d['is_safe'].value + d = {'int': self.int} + if self.is_safe != SafeUUID.unknown: + # is_safe is a SafeUUID instance. Return just its value, so that + # it can be un-pickled in older Python versions without SafeUUID. + d['is_safe'] = self.is_safe.value return d def __setstate__(self, state): - # is_safe was added in 3.7 - state.setdefault('is_safe', SafeUUID.unknown.value) - - for attr in self.__slots__: - value = state[attr] - - # for is_safe, restore the SafeUUID from the stored value - if attr == 'is_safe': - try: - value = SafeUUID(value) - except ValueError: - value = SafeUUID.unknown - object.__setattr__(self, attr, value) + object.__setattr__(self, 'int', state['int']) + # is_safe was added in 3.7; it is also omitted when it is "unknown" + object.__setattr__(self, 'is_safe', + SafeUUID(state['is_safe']) + if 'is_safe' in state else SafeUUID.unknown) def __eq__(self, other): if isinstance(other, UUID): |