aboutsummaryrefslogtreecommitdiffhomepage
path: root/bindings
diff options
context:
space:
mode:
authorGravatar Sebastian Spaeth <Sebastian@SSpaeth.de>2011-09-05 15:52:12 +0200
committerGravatar Sebastian Spaeth <Sebastian@SSpaeth.de>2011-09-05 15:52:12 +0200
commite2e0d487bab0d9b54172e73248b3099825de0479 (patch)
tree784957ceb776902c719e5786d50e4c8d45841627 /bindings
parent5dc189c82df35bafa54766fc8747ab46be8a9311 (diff)
python: Make Database take unicode paths
Decode and Encode from/to unicode objects as required to be able to take unicode path names. Previously we would error out when an unicode object were handed it. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
Diffstat (limited to 'bindings')
-rw-r--r--bindings/python/notmuch/database.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/bindings/python/notmuch/database.py b/bindings/python/notmuch/database.py
index c6070111..f18ca148 100644
--- a/bindings/python/notmuch/database.py
+++ b/bindings/python/notmuch/database.py
@@ -152,7 +152,8 @@ class Database(object):
:exception: Raises :exc:`NotmuchError` in case
of any failure (after printing an error message on stderr).
"""
-
+ if isinstance(path, unicode):
+ path = path.encode('utf-8')
res = Database._open(path, mode)
if res is None:
@@ -167,7 +168,7 @@ class Database(object):
# Raise a NotmuchError if not initialized
self._verify_initialized_db()
- return Database._get_path(self._db)
+ return Database._get_path(self._db).decode('utf-8')
def get_version(self):
"""Returns the database format version
@@ -228,8 +229,8 @@ class Database(object):
Database.MODE.READ_WRITE mode. The underlying library will exit the
program if this method is used on a read-only database!
- :param path: A str containing the path relative to the path of database
- (see :meth:`get_path`), or else should be an absolute path
+ :param path: An unicode string containing the path relative to the path
+ of database (see :meth:`get_path`), or else should be an absolute path
with initial components that match the path of 'database'.
:returns: :class:`Directory` or raises an exception.
:exception: :exc:`NotmuchError`
@@ -258,6 +259,8 @@ class Database(object):
#we got a relative path, make it absolute
abs_dirpath = os.path.abspath(os.path.join(self.get_path(), path))
+ if isinstance(path, unicode):
+ path = path.encode('UTF-8')
dir_p = Database._get_directory(self._db, path)
# return the Directory, init it with the absolute path
@@ -449,7 +452,7 @@ class Database(object):
if not config.has_option('database', 'path'):
raise NotmuchError(message="No DB path specified"
" and no user default found")
- return config.get('database', 'path')
+ return config.get('database', 'path').decode('utf-8')
@property
def db_p(self):
@@ -673,7 +676,7 @@ class Directory(object):
def __init__(self, path, dir_p, parent):
"""
- :param path: The absolute path of the directory object.
+ :param path: The absolute path of the directory object as unicode.
:param dir_p: The pointer to an internal notmuch_directory_t object.
:param parent: The object this Directory is derived from
(usually a :class:`Database`). We do not directly use
@@ -681,6 +684,7 @@ class Directory(object):
this Directory object lives. This keeps the
parent object alive.
"""
+ assert isinstance(path, unicode), "Path needs to be an UNICODE object"
self._path = path
self._dir_p = dir_p
self._parent = parent