view roundup/anypy/dbm_.py @ 4521:abd2db0a159a

Fix StringIO issue2550713: - io.StringIO in newer versions of python returns unicode strings and expects a unicode string in the constructor. Unfortunately csv doesn't handle unicode (yet). So we need to use a BytesIO which gets the utf-8 string from the web-interface. Compatibility for old versions by using Stringio.Stringio for emulating a io.BytesIO also works. - We didn't have a regression test for the EditCSVAction
author Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net>
date Fri, 15 Jul 2011 12:36:47 +0000
parents 0d9369d35483
children d5da643b3d25
line wrap: on
line source

# In Python 3 the "anydbm" module was renamed to be "dbm" which is now a
# package containing the various implementations. The "wichdb" module's
# whichdb() function was moved to the new "dbm" module.

import sys
if sys.version_info[:2] < (2, 6):
    def key_in(db, key):
        return db.has_key(key)
else:
    def key_in(db, key):
        return key in db

try:
    # old school first because <3 had a "dbm" module too...
    import anydbm
    from whichdb import whichdb
except ImportError:
    # python 3+
    import dbm as anydbm
    whichdb = anydbm.whichdb

Roundup Issue Tracker: http://roundup-tracker.org/