On 01:26 am, wolfgang....@rohdewald.de wrote:
The porting guide says
No byte paths in sys.path.
What porting guide is that?
doc for FilePath says
On both Python 2 and Python 3, paths can only be bytes.
I stumbled upon this while trying to find out how much work it might be
to make bin/trial run with python3
admin/run-python3-tests already passes for all twisted.spread related
tests but I still need to clean up a lot.
after adding an assert to FilePath.__init__, python3 bin/trial ...
gives
File "/home/wr/ssdsrc/Twisted/twisted/scripts/trial.py", line 601, in
run
config.parseOptions()
File "/home/wr/ssdsrc/Twisted/twisted/python/usage.py", line 277, in
parseOptions
self.postOptions()
File "/home/wr/ssdsrc/Twisted/twisted/scripts/trial.py", line 472, in
postOptions
_BasicOptions.postOptions(self)
File "/home/wr/ssdsrc/Twisted/twisted/scripts/trial.py", line 382, in
postOptions
self['reporter'] = self._loadReporterByName(self['reporter'])
File "/home/wr/ssdsrc/Twisted/twisted/scripts/trial.py", line 369, in
_loadReporterByName
for p in plugin.getPlugins(itrial.IReporter):
File "/home/wr/ssdsrc/Twisted/twisted/plugin.py", line 209, in
getPlugins
allDropins = getCache(package)
File "/home/wr/ssdsrc/Twisted/twisted/plugin.py", line 134, in
getCache
mod = getModule(module.__name__)
File "/home/wr/ssdsrc/Twisted/twisted/python/modules.py", line 781, in
getModule
return theSystemPath[moduleName]
File "/home/wr/ssdsrc/Twisted/twisted/python/modules.py", line 702, in
__getitem__
self._findEntryPathString(moduleObject)),
File "/home/wr/ssdsrc/Twisted/twisted/python/modules.py", line 627, in
_findEntryPathString
if _isPackagePath(FilePath(topPackageObj.__file__)):
File "/home/wr/ssdsrc/Twisted/twisted/python/filepath.py", line 664,
in __init__
assert isinstance(path, bytes), 'path must be bytes: %r' % (path,)
AssertionError: path must be bytes:
'/home/wr/ssdsrc/Twisted/twisted/__init__.py'
If paths are being represented using unicode somewhere and you want to
use them with FilePath then you have to encode them (or you have to add
unicode path support to FilePath and let FilePath encode them).
Unfortunately it's not entirely obvious how to make FilePath support
unicode paths since not all platforms Twisted supports represent
filesystem paths using unicode.
The choice python-dev made to bridge this gap was the creation of the
"surrogateescape" error handler for the UTC-8 codec. This lets you
pretend that any time you need to convert between bytes and unicode the
correct codec is UTF-8 (with this special error handler).
It's not clear this was a good choice (since the result is unicode
strings that may contain garbage which will confuse other software) but
it's also not clear it's possible for Twisted to try to make any other
choice (at some point Twisted has to interoperate with the path-related
APIs in Python itself - `sys.path`, for example).
Not sure if that helps you at all. Maybe it outlines the problem a
little more clearly, at least.
Jean-Paul
_______________________________________________
Twisted-Python mailing list
Twisted-Python@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python