Thank you everybody for your bug reports and comments.
I believe that this bug is already fixed in the 0.8-series, but we have not yet released a package for this.
The code triggering this is used when there is an exception/error message containing a non-ASCII character (for example a filename), so this is sometimes 'fixed' by fixing the underlying problem. This is why some commenters say the problem went away when they resolved permissions issues. I do not know what has changed that is causing this to break for people it did not break for previously.
The reality is that version 0.7 and below were never actually written to accommodate non-ASCII characters and the fact it worked at all was largely luck. The 0.8 series does add proper support for non-ASCII, with the internals converted to Unicode and Python 3 support.
Many thanks to Pete Zaitcev (zaitcev) in Bug #1797928 for proposing a patch for this, which I had overlooked.
It would be helpful if you can please test to see if this fixes your problem as follows:
1. Create a new destination directory to test with.
2. Test that duplicity fails as you have reported when using this destination.
3. Pull down a copy of the branch with the fix:
bzr branch lp:~aaron-whitehouse/duplicity/07-uexc-fix dup_patched
4. cd dup_patched/duplicity
5. run ./compilec.py
6. change directory back to wherever you were running duplicity from before
5. Test with the patched duplicity:
PYTHONPATH=[full path/]dup_patched [full path/]dup_patched/bin/duplicity [all of your options/arguments]
Please let me know how you get on.
== Simple illustration of failure ==
A simple example triggering this bug is to create a couple of empty directories, say "source1" and "dest".
Then try:
duplicity --exclude=bänana source1/ file://dest/
This should give a FilePrefixError (hideous in version 0.7 and much more informative in 0.8), but instead says:
Traceback (most recent call last):
File "/usr/bin/duplicity", line 1611, in <module>
if "Forced assertion for testing" in util.uexc(e):
File "/usr/lib/python2.7/dist-packages/duplicity/util.py", line 79, in uexc
return ufn(unicode(e).encode('utf-8'))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
Thank you everybody for your bug reports and comments.
I believe that this bug is already fixed in the 0.8-series, but we have not yet released a package for this.
The code triggering this is used when there is an exception/error message containing a non-ASCII character (for example a filename), so this is sometimes 'fixed' by fixing the underlying problem. This is why some commenters say the problem went away when they resolved permissions issues. I do not know what has changed that is causing this to break for people it did not break for previously.
The reality is that version 0.7 and below were never actually written to accommodate non-ASCII characters and the fact it worked at all was largely luck. The 0.8 series does add proper support for non-ASCII, with the internals converted to Unicode and Python 3 support.
Many thanks to Pete Zaitcev (zaitcev) in Bug #1797928 for proposing a patch for this, which I had overlooked.
I have applied this in the branch here: lp:~aaron-whitehouse/duplicity/07-uexc-fix
It would be helpful if you can please test to see if this fixes your problem as follows: duplicity patched/ bin/duplicity [all of your options/arguments]
1. Create a new destination directory to test with.
2. Test that duplicity fails as you have reported when using this destination.
3. Pull down a copy of the branch with the fix:
bzr branch lp:~aaron-whitehouse/duplicity/07-uexc-fix dup_patched
4. cd dup_patched/
5. run ./compilec.py
6. change directory back to wherever you were running duplicity from before
5. Test with the patched duplicity:
PYTHONPATH=[full path/]dup_patched [full path/]dup_
Please let me know how you get on.
== Simple illustration of failure ==
A simple example triggering this bug is to create a couple of empty directories, say "source1" and "dest".
Then try:
duplicity --exclude=bänana source1/ file://dest/
This should give a FilePrefixError (hideous in version 0.7 and much more informative in 0.8), but instead says: duplicity" , line 1611, in <module> python2. 7/dist- packages/ duplicity/ util.py" , line 79, in uexc e).encode( 'utf-8' ))
Traceback (most recent call last):
File "/usr/bin/
if "Forced assertion for testing" in util.uexc(e):
File "/usr/lib/
return ufn(unicode(
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)