Author: Armin Rigo <[email protected]>
Branch:
Changeset: r93865:0b2256471902
Date: 2018-02-22 08:02 +0100
http://bitbucket.org/pypy/pypy/changeset/0b2256471902/
Log: Issue #2755
Accept unicode filenames in dbm.open()
diff --git a/lib_pypy/dbm.py b/lib_pypy/dbm.py
--- a/lib_pypy/dbm.py
+++ b/lib_pypy/dbm.py
@@ -157,7 +157,14 @@
def open(filename, flag='r', mode=0666):
"open a DBM database"
if not isinstance(filename, str):
- raise TypeError("expected string")
+ if sys.version_info < (3,) and isinstance(filename, unicode):
+ # unlike CPython we'll encode 'filename' with filesystemencoding
+ # instead of defaultencoding, because that seems like a far
+ # better idea. But I'm also open for saying that we should
+ # rather go for bug-to-bug compatibility instead.
+ filename = filename.encode(sys.getfilesystemencoding())
+ else:
+ raise TypeError("expected string")
openflag = 0
diff --git a/pypy/module/test_lib_pypy/test_dbm_extra.py
b/pypy/module/test_lib_pypy/test_dbm_extra.py
--- a/pypy/module/test_lib_pypy/test_dbm_extra.py
+++ b/pypy/module/test_lib_pypy/test_dbm_extra.py
@@ -1,5 +1,5 @@
from __future__ import absolute_import
-import py
+import py, os
from rpython.tool.udir import udir
try:
from lib_pypy import dbm
@@ -74,3 +74,8 @@
assert 'key_with_empty_value' in d
assert d['key_with_empty_value'] == ''
d.close()
+
+def test_unicode_filename():
+ path = str(udir) + os.sep + u'test_dbm_extra.test_unicode_filename'
+ d = dbm.open(path, 'c')
+ d.close()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit