diff --git a/Lib/shelve.py b/Lib/shelve.py index fb41c844e4f..8055f42e229 100644 --- a/Lib/shelve.py +++ b/Lib/shelve.py @@ -145,7 +145,11 @@ def close(self): self.dict.close() except AttributeError: pass - self.dict = _ClosedDict() + # _ClosedDict can be None when close is called from __del__ during shutdown + if _ClosedDict is None: + self.dict = None + else: + self.dict = _ClosedDict() def __del__(self): if not hasattr(self, 'writeback'): diff --git a/Misc/NEWS b/Misc/NEWS index ac7230bffbd..9ef096035d5 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -66,6 +66,9 @@ Core and Builtins Library ------- +- Issue #7835: shelve should no longer produce mysterious warnings during + interpreter shutdown. + - Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is specified, rather than fall through to AF_PACKET (in the `socket` module). Also, raise ValueError rather than TypeError when an unknown TIPC address