mirror of
https://github.com/python/cpython.git
synced 2025-10-09 16:34:44 +00:00
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:
parent
1f36bf6077
commit
54752533b2
3 changed files with 144 additions and 66 deletions
27
Lib/uuid.py
27
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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue