[tahoe-dev] [tahoe-lafs] #534: "tahoe cp" command encoding issue

tahoe-lafs trac at allmydata.org
Tue Feb 17 10:02:10 PST 2009


#534: "tahoe cp" command encoding issue
-----------------------------------+----------------------------------------
     Reporter:  francois           |       Owner:             
         Type:  defect             |      Status:  reopened   
     Priority:  minor              |   Milestone:  undecided  
    Component:  code-frontend-cli  |     Version:  1.2.0      
   Resolution:                     |    Keywords:  cp encoding
Launchpad_bug:                     |  
-----------------------------------+----------------------------------------
Changes (by zooko):

 * cc: tahoe-dev@… (added)


Comment:

 Francois:

 Thanks for the patch!  I'm glad that it adds a test of mkdir as well.

 Two things:  1.  We prefer functions which are stricter about their
 inputs, so could you change to_unicode() so that it raises an exception if
 the argument is not a str?  Like this:

 {{{
 from util.assertutil import precondition

 def to_unicode(s):
     precondition(isinstance(s, str), s)
 }}}

 2.  Could you please add some doc to CLI.txt explaining that it currently
 works only for utf-8 strings on argv or from the filesystem, and that it
 tries to detect if your filesystem is providing utf-8 and raise an
 exception if not.  Oh, and also there is a third thing:

 3.  What happens if I run a command-line like "tahoe cp A B" and
 sys.getdefaultencoding() returns something other than utf-8?  Do I see a
 Python backtrace on stdout?  Please make it so that this causes an
 explanatory "USAGE"-style string.

 Oh, and

 4.  Isn't sys.getdefaultencoding() just telling how the Python interpreter
 is configured, not the underlying operating system?  Oh, actually look:
 there is a "sys.getfilesystemencoding()":

 http://docs.python.org/library/sys.html#sys.getfilesystemencoding

 So I guess 4 is to use sys.getfilesystemencoding() instead of
 sys.getdefaultencoding() when trying to determine what encoding we get
 back from os.listdir(), and 5 is to document in CLI.txt the distinction
 between filesystem encoding and command-line-arguments encoding.

 Phewf.  Too bad this isn't easier.

 Thanks a lot for your help, François!

 Regards,

 Zooko

-- 
Ticket URL: <http://allmydata.org/trac/tahoe/ticket/534#comment:39>
tahoe-lafs <http://allmydata.org>
secure decentralized file storage grid


More information about the tahoe-dev mailing list