• Rémi Cardona's avatar
    [server] Port BFSS to py3k · b261d90149d0
    Rémi Cardona authored
    The BFSS API changes in python 3:
    
    * 'defaultdir' MUST be a unicode object
    * 'fsencoding' MUST NOT be set
    
    In python 2, fsencoding handles both the encoding of file paths on the
    file system (utf-8 by default, but the system may actually be using
    something else) and the encoding of file paths that will be stored in
    the database.
    
    So in python 3, we wipe the slate clean:
    
    * rely on sys.getfilesystemencoding() to convert unicode objects to
      bytes
    * always encode paths to utf-8 for storage in the database
    
    Caveat emptor / here be dragons:
    
    * sys.getfilesystemencoding() depends on the current locale, which
      therefore MUST be set properly
    * when migrating an existing instance from py2 to py3, one MAY need
      to reencode file paths stored in the database
    b261d90149d0