save_tuple(): So long as the charter is rewriting for clarity, the snaky

control flow had to be simplified.
This commit is contained in:
Tim Peters 2003-01-28 05:48:29 +00:00
parent ff57bff16e
commit d97da80dd5

View file

@ -458,17 +458,16 @@ class Pickler:
def save_tuple(self, object):
write = self.write
save = self.save
memo = self.memo
proto = self.proto
if proto >= 1:
n = len(object)
if n <= 3:
if not object:
if n == 0 and proto:
write(EMPTY_TUPLE)
return
if proto >= 2:
save = self.save
memo = self.memo
if n <= 3 and proto >= 2:
for element in object:
save(element)
# Subtle. Same as in the big comment below.
@ -486,7 +485,7 @@ class Pickler:
for element in object:
save(element)
if object and id(object) in memo:
if n and id(object) in memo:
# Subtle. d was not in memo when we entered save_tuple(), so
# the process of saving the tuple's elements must have saved
# the tuple itself: the tuple is recursive. The proper action
@ -498,7 +497,7 @@ class Pickler:
if proto:
write(POP_MARK + get)
else: # proto 0 -- POP_MARK not available
write(POP * (len(object) + 1) + get)
write(POP * (n+1) + get)
return
# No recursion (including the empty-tuple case for protocol 0).