From: James Cave Date: Sat, 29 Jul 2023 00:08:11 +0000 (-0400) Subject: gh-107089: Improve Shelf.clear method performance (gh-107090) X-Git-Tag: v3.13.0a1~1146 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=810d5d87d9fe8d86aad99e48cef4f78a72e16ccf;p=thirdparty%2FPython%2Fcpython.git gh-107089: Improve Shelf.clear method performance (gh-107090) --- diff --git a/Lib/shelve.py b/Lib/shelve.py index e053c397345a..50584716e9ea 100644 --- a/Lib/shelve.py +++ b/Lib/shelve.py @@ -226,6 +226,13 @@ class DbfilenameShelf(Shelf): import dbm Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback) + def clear(self): + """Remove all items from the shelf.""" + # Call through to the clear method on dbm-backed shelves. + # see https://github.com/python/cpython/issues/107089 + self.cache.clear() + self.dict.clear() + def open(filename, flag='c', protocol=None, writeback=False): """Open a persistent dictionary for reading and writing. diff --git a/Misc/ACKS b/Misc/ACKS index fadf488888aa..8b8c5ad8434b 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -289,6 +289,7 @@ Edward Catmur Lorenzo M. Catucci Bruno Cauet Donn Cave +James Cave Charles Cazabon Jesús Cea Avión Per Cederqvist diff --git a/Misc/NEWS.d/next/Library/2023-07-22-21-57-34.gh-issue-107089.Dnget2.rst b/Misc/NEWS.d/next/Library/2023-07-22-21-57-34.gh-issue-107089.Dnget2.rst new file mode 100644 index 000000000000..9d5ba1a2d7cc --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-07-22-21-57-34.gh-issue-107089.Dnget2.rst @@ -0,0 +1,2 @@ +Shelves opened with :func:`shelve.open` have a much faster :meth:`clear` +method. Patch by James Cave. \ No newline at end of file