This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: mailbox.Maildir.get_message() may fail when Maildir dirname is a unicode string
Type: behavior Stage: resolved
Components: email Versions: Python 2.7
Status: closed Resolution: rejected
Dependencies: Superseder:
Assigned To: Nosy List: barry, petri.lehtinen, poliveira, r.david.murray
Priority: normal Keywords: easy

Created on 2012-05-25 22:55 by poliveira, last changed 2022-04-11 14:57 by admin. This issue is now closed.

File name Uploaded Description Edit poliveira, 2012-05-25 22:55
Messages (2)
msg161629 - (view) Author: Pablo Oliveira (poliveira) Date: 2012-05-25 22:55
I'm using Python 2.7.3rc2 from debian sid packages.

If a mailbox.Maildir object is created with a unicode dirname,
retrieving a message tagged with maildir flags with get() or get_message() fails with the following exception:

Traceback (most recent call last):
  File "", line 21, in <module>
  File "/usr/lib/python2.7/", line 343, in get_message
  File "/usr/lib/python2.7/", line 1480, in set_info
    raise TypeError('info must be a string: %s' % type(info))
TypeError: info must be a string: <type 'unicode'>

Since python os.path module seems to cope with unicode paths, it would be nice to fix this issue.

Attached is a simple script reproducing the bug.

The following patch seems to solve the issue for me:
--- /usr/lib/python2.7/	2012-04-23 01:25:48.000000000 +0200
+++	2012-05-26 00:34:03.585347627 +0200
@@ -1474,7 +1474,7 @@
     def set_info(self, info):
         """Set the message's "info" string."""
-        if isinstance(info, str):
+        if isinstance(info, basestring):
             self._info = info
             raise TypeError('info must be a string: %s' % type(info))


Pablo Oliveira.
msg169792 - (view) Author: Petri Lehtinen (petri.lehtinen) * (Python committer) Date: 2012-09-03 18:19
This would be considered a new feature, and is thus out of scope for 2.7. An easy workaround is to encode the unicode path to str using the file system encoding first (sys.getfilesystemencoding()).
Date User Action Args
2022-04-11 14:57:30adminsetgithub: 59127
2012-09-03 18:19:54petri.lehtinensetstatus: open -> closed
resolution: rejected
messages: + msg169792

stage: needs patch -> resolved
2012-09-02 10:43:34petri.lehtinensetkeywords: + easy
nosy: + petri.lehtinen

stage: needs patch
2012-05-29 21:16:45r.david.murraysetnosy: + barry, r.david.murray
components: + email, - Library (Lib)
2012-05-25 22:55:21poliveiracreate