From 1bc82f891c2ed0c4b062158d2c8339fb90406395 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 5 Dec 2004 03:58:17 +0000 Subject: [PATCH] Removed deprecated method arguments from the shelve module. --- Doc/lib/libshelve.tex | 18 ++++++++---------- Lib/shelve.py | 23 +++++++---------------- Lib/test/test_shelve.py | 16 ++++++++-------- Misc/NEWS | 2 ++ 4 files changed, 25 insertions(+), 34 deletions(-) diff --git a/Doc/lib/libshelve.tex b/Doc/lib/libshelve.tex index 17ef3e50926..47f7ef67df3 100644 --- a/Doc/lib/libshelve.tex +++ b/Doc/lib/libshelve.tex @@ -13,7 +13,7 @@ instances, recursive data types, and objects containing lots of shared sub-objects. The keys are ordinary strings. \refstmodindex{pickle} -\begin{funcdesc}{open}{filename\optional{,flag='c'\optional{,protocol=\code{None}\optional{,writeback=\code{False}\optional{,binary=\code{None}}}}}} +\begin{funcdesc}{open}{filename\optional{,flag='c'\optional{,protocol=\code{None}\optional{,writeback=\code{False}}}}} Open a persistent dictionary. The filename specified is the base filename for the underlying database. As a side-effect, an extension may be added to the filename and more than one file may be created. By default, the @@ -24,8 +24,7 @@ parameter of \function{anydbm.open}. By default, version 0 pickles are used to serialize values. The version of the pickle protocol can be specified with the \var{protocol} parameter. \versionchanged[The \var{protocol} -parameter was added. The \var{binary} parameter is deprecated -and provided for backwards compatibility only]{2.3} +parameter was added]{2.3} By default, mutations to persistent-dictionary mutable entries are not automatically written back. If the optional \var{writeback} parameter @@ -76,7 +75,7 @@ requires knowledge about the database implementation used. \end{itemize} -\begin{classdesc}{Shelf}{dict\optional{, protocol=None\optional{, writeback=False\optional{, binary=None}}}} +\begin{classdesc}{Shelf}{dict\optional{, protocol=None\optional{, writeback=False}}} A subclass of \class{UserDict.DictMixin} which stores pickled values in the \var{dict} object. @@ -84,8 +83,7 @@ By default, version 0 pickles are used to serialize values. The version of the pickle protocol can be specified with the \var{protocol} parameter. See the \module{pickle} documentation for a discussion of the pickle protocols. \versionchanged[The \var{protocol} -parameter was added. The \var{binary} parameter is deprecated and -provided for backwards compatibility only]{2.3} +parameter was added]{2.3} If the \var{writeback} parameter is \code{True}, the object will hold a cache of all entries accessed and write them back to the \var{dict} at @@ -93,7 +91,7 @@ sync and close times. This allows natural operations on mutable entries, but can consume much more memory and make sync and close take a long time. \end{classdesc} -\begin{classdesc}{BsdDbShelf}{dict\optional{, protocol=None\optional{, writeback=False\optional{, binary=None}}}} +\begin{classdesc}{BsdDbShelf}{dict\optional{, protocol=None\optional{, writeback=False}}} A subclass of \class{Shelf} which exposes \method{first}, \method{next}, \method{previous}, \method{last} and @@ -102,19 +100,19 @@ but not in other database modules. The \var{dict} object passed to the constructor must support those methods. This is generally accomplished by calling one of \function{bsddb.hashopen}, \function{bsddb.btopen} or \function{bsddb.rnopen}. The optional -\var{protocol}, \var{writeback}, and \var{binary} parameters have the +\var{protocol} and \var{writeback} parameters have the same interpretation as for the \class{Shelf} class. \end{classdesc} -\begin{classdesc}{DbfilenameShelf}{filename\optional{, flag='c'\optional{, protocol=None\optional{, writeback=False\optional{, binary=None}}}}} +\begin{classdesc}{DbfilenameShelf}{filename\optional{, flag='c'\optional{, protocol=None\optional{, writeback=False}}}} A subclass of \class{Shelf} which accepts a \var{filename} instead of a dict-like object. The underlying file will be opened using {}\function{anydbm.open}. By default, the file will be created and opened for both read and write. The optional \var{flag} parameter has the same interpretation as for the \function{open} function. The -optional \var{protocol}, \var{writeback}, and \var{binary} parameters +optional \var{protocol} and \var{writeback} parameters have the same interpretation as for the \class{Shelf} class. \end{classdesc} diff --git a/Lib/shelve.py b/Lib/shelve.py index 5e680bc3c68..4959c262c3e 100644 --- a/Lib/shelve.py +++ b/Lib/shelve.py @@ -80,14 +80,8 @@ class Shelf(UserDict.DictMixin): See the module's __doc__ string for an overview of the interface. """ - def __init__(self, dict, protocol=None, writeback=False, binary=None): + def __init__(self, dict, protocol=None, writeback=False): self.dict = dict - if protocol is not None and binary is not None: - raise ValueError, "can't specify both 'protocol' and 'binary'" - if binary is not None: - warnings.warn("The 'binary' argument to Shelf() is deprecated", - PendingDeprecationWarning) - protocol = int(binary) if protocol is None: protocol = 0 self._protocol = protocol @@ -171,8 +165,8 @@ class BsdDbShelf(Shelf): See the module's __doc__ string for an overview of the interface. """ - def __init__(self, dict, protocol=None, writeback=False, binary=None): - Shelf.__init__(self, dict, protocol, writeback, binary) + def __init__(self, dict, protocol=None, writeback=False): + Shelf.__init__(self, dict, protocol, writeback) def set_location(self, key): (key, value) = self.dict.set_location(key) @@ -207,12 +201,12 @@ class DbfilenameShelf(Shelf): See the module's __doc__ string for an overview of the interface. """ - def __init__(self, filename, flag='c', protocol=None, writeback=False, binary=None): + def __init__(self, filename, flag='c', protocol=None, writeback=False): import anydbm - Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback, binary) + Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback) -def open(filename, flag='c', protocol=None, writeback=False, binary=None): +def open(filename, flag='c', protocol=None, writeback=False): """Open a persistent dictionary for reading and writing. The filename parameter is the base filename for the underlying @@ -222,10 +216,7 @@ def open(filename, flag='c', protocol=None, writeback=False, binary=None): anydbm.open(). The optional protocol parameter specifies the version of the pickle protocol (0, 1, or 2). - The optional binary parameter is deprecated and may be set to True - to force the use of binary pickles for serializing data values. - See the module's __doc__ string for an overview of the interface. """ - return DbfilenameShelf(filename, flag, protocol, writeback, binary) + return DbfilenameShelf(filename, flag, protocol, writeback) diff --git a/Lib/test/test_shelve.py b/Lib/test/test_shelve.py index e3f237d9f6e..447d06d70eb 100644 --- a/Lib/test/test_shelve.py +++ b/Lib/test/test_shelve.py @@ -10,7 +10,7 @@ class TestCase(unittest.TestCase): def test_ascii_file_shelf(self): try: - s = shelve.open(self.fn, binary=False) + s = shelve.open(self.fn, protocol=0) s['key1'] = (1,2,3,4) self.assertEqual(s['key1'], (1,2,3,4)) s.close() @@ -20,7 +20,7 @@ class TestCase(unittest.TestCase): def test_binary_file_shelf(self): try: - s = shelve.open(self.fn, binary=True) + s = shelve.open(self.fn, protocol=1) s['key1'] = (1,2,3,4) self.assertEqual(s['key1'], (1,2,3,4)) s.close() @@ -40,12 +40,12 @@ class TestCase(unittest.TestCase): def test_in_memory_shelf(self): d1 = {} - s = shelve.Shelf(d1, binary=False) + s = shelve.Shelf(d1, protocol=0) s['key1'] = (1,2,3,4) self.assertEqual(s['key1'], (1,2,3,4)) s.close() d2 = {} - s = shelve.Shelf(d2, binary=True) + s = shelve.Shelf(d2, protocol=1) s['key1'] = (1,2,3,4) self.assertEqual(s['key1'], (1,2,3,4)) s.close() @@ -102,19 +102,19 @@ class TestShelveBase(mapping_tests.BasicTestMappingProtocol): os.unlink(f) class TestAsciiFileShelve(TestShelveBase): - _args={'binary':False} + _args={'protocol':0} _in_mem = False class TestBinaryFileShelve(TestShelveBase): - _args={'binary':True} + _args={'protocol':1} _in_mem = False class TestProto2FileShelve(TestShelveBase): _args={'protocol':2} _in_mem = False class TestAsciiMemShelve(TestShelveBase): - _args={'binary':False} + _args={'protocol':0} _in_mem = True class TestBinaryMemShelve(TestShelveBase): - _args={'binary':True} + _args={'protocol':1} _in_mem = True class TestProto2MemShelve(TestShelveBase): _args={'protocol':2} diff --git a/Misc/NEWS b/Misc/NEWS index 707429b7dd7..ee0e03a0a4b 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -21,6 +21,8 @@ Extension Modules Library ------- +- the shelve module no longer uses the deprecated binary parameter. + - the pstats module no longer uses the deprecated ignore() method. - the filecmp module no longer uses the deprecated use_statcache argument.