[Python-Dev] Python 3.0: can we make dbm's .keys() return an iterator?
Josiah Carlson
josiah.carlson at gmail.com
Fri Sep 12 07:44:57 CEST 2008
On Thu, Sep 11, 2008 at 2:40 AM, Gerhard Häring <gh at ghaering.de> wrote:
> As far as I can see, the specification of the dbm interface is the module
> docstring in dbm/__init__.py, which reads:
>
> """
> [...]
> It has the following interface (key and data are strings):
>
> d[key] = data # store data at key (may override data at
> # existing key)
> data = d[key] # retrieve data at key (raise KeyError if no
> # such key)
> del d[key] # delete data stored at key (raises KeyError
> # if no such key)
> flag = key in d # true if the key exists
> list = d.keys() # return a list of all existing keys (slow!)
> """
>
> Now I thought that in Python 3.0, keys(), values() and friends should return
> iterators. Can we change at least the specification of the dbm module? We
> could then later in 3.1 change the implementations to return iterators
> instead of lists, too.
>
> I stumbled upon it cos I'm trying to help Skip with the SQLite-based
> implementation.
If it's to be following a variant of the dictionary API, the object
should return a view object:
http://docs.python.org/dev/3.0/library/stdtypes.html#dict .
I've updated my version of the library in the tracker, which includes
generic Keys, Values, and Items classes that implement the view
interface.
- Josiah
More information about the Python-Dev
mailing list