bpo-30977: rework code changes according to post-merge code review (GH-9106)

also mention the change and its consequences in What's New
This commit is contained in:
Tal Einat 2018-09-10 16:11:04 +03:00 committed by GitHub
parent 1f36bf6077
commit 54752533b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 144 additions and 66 deletions

View file

@ -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):