]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Update the dbm documentation (GH-137919)
authorSerhiy Storchaka <storchaka@gmail.com>
Tue, 19 Aug 2025 15:05:24 +0000 (18:05 +0300)
committerGitHub <noreply@github.com>
Tue, 19 Aug 2025 15:05:24 +0000 (18:05 +0300)
Unify documentation for all backends, enumerate all not implemented mapping
methods, document particularities of implemented mapping methods.

Doc/library/dbm.rst
Doc/whatsnew/3.13.rst

index 39e287b15214e4a5159013c240ef7c0372ee3676..140ca5c1e3405a1dbacadf04cc39399ad5225b7f 100644 (file)
@@ -90,10 +90,13 @@ the Oracle Berkeley DB.
    .. versionchanged:: 3.11
       *file* accepts a :term:`path-like object`.
 
-The object returned by :func:`~dbm.open` supports the same basic functionality as a
-:class:`dict`; keys and their corresponding values can be stored, retrieved, and
-deleted, and the :keyword:`in` operator and the :meth:`!keys` method are
-available, as well as :meth:`!get` and :meth:`!setdefault` methods.
+The object returned by :func:`~dbm.open` supports the basic
+functionality of mutable :term:`mappings <mapping>`;
+keys and their corresponding values can be stored, retrieved, and
+deleted, and iteration, the :keyword:`in` operator and methods :meth:`!keys`,
+:meth:`!get`, :meth:`!setdefault` and :meth:`!clear` are available.
+The :meth:`!keys` method returns a list instead of a view object.
+The :meth:`!setdefault` method requires two arguments.
 
 Key and values are always stored as :class:`bytes`. This means that when
 strings are used they are implicitly converted to the default encoding before
@@ -114,6 +117,10 @@ will automatically close them when done.
    Deleting a key from a read-only database raises a database module specific exception
    instead of :exc:`KeyError`.
 
+.. versionchanged:: 3.13
+   :meth:`!clear` methods are now available for all :mod:`dbm` backends.
+
+
 The following example records some hostnames and a corresponding title,  and
 then prints out the contents of the database::
 
@@ -173,9 +180,6 @@ or any other SQLite browser, including the SQLite CLI.
 .. function:: open(filename, /, flag="r", mode=0o666)
 
    Open an SQLite database.
-   The returned object behaves like a :term:`mapping`,
-   implements a :meth:`!close` method,
-   and supports a "closing" context manager via the :keyword:`with` keyword.
 
    :param filename:
       The path to the database to be opened.
@@ -192,6 +196,17 @@ or any other SQLite browser, including the SQLite CLI.
       The Unix file access mode of the file (default: octal ``0o666``),
       used only when the database has to be created.
 
+   The returned database object behaves similar to a mutable :term:`mapping`,
+   but the :meth:`!keys` method returns a list, and
+   the :meth:`!setdefault` method requires two arguments.
+   It also supports a "closing" context manager via the :keyword:`with` keyword.
+
+   The following methods are also provided:
+
+   .. method:: sqlite3.close()
+
+      Close the SQLite database.
+
    .. method:: sqlite3.reorganize()
 
       If you have carried out a lot of deletions and would like to shrink the space
@@ -204,6 +219,7 @@ or any other SQLite browser, including the SQLite CLI.
 
       .. versionadded:: next
 
+
 :mod:`dbm.gnu` --- GNU database manager
 ---------------------------------------
 
@@ -232,6 +248,11 @@ functionality like crash tolerance.
    raised for general mapping errors like specifying an incorrect key.
 
 
+.. data:: open_flags
+
+   A string of characters the *flag* parameter of :meth:`~dbm.gnu.open` supports.
+
+
 .. function:: open(filename, flag="r", mode=0o666, /)
 
    Open a GDBM database and return a :class:`!gdbm` object.
@@ -270,14 +291,25 @@ functionality like crash tolerance.
    .. versionchanged:: 3.11
       *filename* accepts a :term:`path-like object`.
 
-   .. data:: open_flags
+   :class:`!gdbm` objects behave similar to mutable :term:`mappings <mapping>`,
+   but methods :meth:`!items`, :meth:`!values`, :meth:`!pop`, :meth:`!popitem`,
+   and :meth:`!update` are not supported,
+   the :meth:`!keys` method returns a list, and
+   the :meth:`!setdefault` method requires two arguments.
+   It also supports a "closing" context manager via the :keyword:`with` keyword.
+
+   .. versionchanged:: 3.2
+      Added the :meth:`!get` and :meth:`!setdefault` methods.
 
-      A string of characters the *flag* parameter of :meth:`~dbm.gnu.open` supports.
+   .. versionchanged:: 3.13
+      Added the :meth:`!clear` method.
 
-   :class:`!gdbm` objects behave similar to :term:`mappings <mapping>`,
-   but :meth:`!items` and :meth:`!values` methods are not supported.
    The following methods are also provided:
 
+   .. method:: gdbm.close()
+
+      Close the GDBM database.
+
    .. method:: gdbm.firstkey()
 
       It's possible to loop over every key in the database using this method  and the
@@ -313,16 +345,6 @@ functionality like crash tolerance.
       When the database has been opened in fast mode, this method forces any
       unwritten data to be written to the disk.
 
-   .. method:: gdbm.close()
-
-      Close the GDBM database.
-
-   .. method:: gdbm.clear()
-
-      Remove all items from the GDBM database.
-
-      .. versionadded:: 3.13
-
 
 :mod:`dbm.ndbm` --- New Database Manager
 ----------------------------------------
@@ -383,22 +405,27 @@ This module can be used with the "classic" NDBM interface or the
    :param int mode:
       |mode_param_doc|
 
-   :class:`!ndbm` objects behave similar to :term:`mappings <mapping>`,
-   but :meth:`!items` and :meth:`!values` methods are not supported.
-   The following methods are also provided:
-
    .. versionchanged:: 3.11
       Accepts :term:`path-like object` for filename.
 
-   .. method:: ndbm.close()
+   :class:`!ndbm` objects behave similar to mutable :term:`mappings <mapping>`,
+   but methods :meth:`!items`, :meth:`!values`, :meth:`!pop`, :meth:`!popitem`,
+   and :meth:`!update` are not supported,
+   the :meth:`!keys` method returns a list, and
+   the :meth:`!setdefault` method requires two arguments.
+   It also supports a "closing" context manager via the :keyword:`with` keyword.
 
-      Close the NDBM database.
+   .. versionchanged:: 3.2
+      Added the :meth:`!get` and :meth:`!setdefault` methods.
 
-   .. method:: ndbm.clear()
+   .. versionchanged:: 3.13
+      Added the :meth:`!clear` method.
 
-      Remove all items from the NDBM database.
+   The following method is also provided:
 
-      .. versionadded:: 3.13
+   .. method:: ndbm.close()
+
+      Close the NDBM database.
 
 
 :mod:`dbm.dumb` --- Portable DBM implementation
@@ -436,9 +463,6 @@ The :mod:`!dbm.dumb` module defines the following:
 .. function:: open(filename, flag="c", mode=0o666)
 
    Open a :mod:`!dbm.dumb` database.
-   The returned database object behaves similar to a :term:`mapping`,
-   in addition to providing :meth:`~dumbdbm.sync` and :meth:`~dumbdbm.close`
-   methods.
 
    :param filename:
       The basename of the database file (without extensions).
@@ -477,14 +501,12 @@ The :mod:`!dbm.dumb` module defines the following:
    .. versionchanged:: 3.11
       *filename* accepts a :term:`path-like object`.
 
-   In addition to the methods provided by the
-   :class:`collections.abc.MutableMapping` class,
-   the following methods are provided:
+   The returned database object behaves similar to a mutable :term:`mapping`,
+   but the :meth:`!keys` and :meth:`!items` methods return lists, and
+   the :meth:`!setdefault` method requires two arguments.
+   It also supports a "closing" context manager via the :keyword:`with` keyword.
 
-   .. method:: dumbdbm.sync()
-
-      Synchronize the on-disk directory and data files.  This method is called
-      by the :meth:`shelve.Shelf.sync` method.
+   The following methods are also provided:
 
    .. method:: dumbdbm.close()
 
@@ -501,3 +523,8 @@ The :mod:`!dbm.dumb` module defines the following:
          that this factor changes for each :mod:`dbm` submodule.
 
       .. versionadded:: next
+
+   .. method:: dumbdbm.sync()
+
+      Synchronize the on-disk directory and data files.  This method is called
+      by the :meth:`shelve.Shelf.sync` method.
index 126329b538db31427db47857daf6235ba49150d6..61f458d24e93a40eb8cf9544779cb0891288f131 100644 (file)
@@ -834,7 +834,7 @@ dbm
   (Contributed by Raymond Hettinger and Erlend E. Aasland in :gh:`100414`.)
 
 * Allow removing all items from the database through
-  the new :meth:`.gdbm.clear` and :meth:`.ndbm.clear` methods.
+  the new :meth:`!clear` methods of the GDBM and NDBM database objects.
   (Contributed by Donghee Na in :gh:`107122`.)