issue #49: 2.x/3.x compatible decode.
Much uglier command line, but it works across major Python releases.
This commit is contained in:
parent
038ab04908
commit
3d0e8c36d2
|
@ -728,8 +728,16 @@ class Stream(mitogen.core.Stream):
|
||||||
source = source.replace(' ', '\t')
|
source = source.replace(' ', '\t')
|
||||||
source = source.replace('CONTEXT_NAME', self.remote_name)
|
source = source.replace('CONTEXT_NAME', self.remote_name)
|
||||||
encoded = source.encode('zlib').encode('base64').replace('\n', '')
|
encoded = source.encode('zlib').encode('base64').replace('\n', '')
|
||||||
return [self.python_path, '-c',
|
# We can't use bytes.decode() in 3.x since it was restricted to always
|
||||||
'exec("%s".decode("base64").decode("zlib"))' % (encoded,)]
|
# return unicode, so codecs.decode() is used instead. In 3.x
|
||||||
|
# codecs.decode() requires a bytes object. Since we must be compatible
|
||||||
|
# with 2.4 (no bytes literal), an extra .encode() either returns the
|
||||||
|
# same str (2.x) or an equivalent bytes (3.x).
|
||||||
|
return [
|
||||||
|
self.python_path, '-c',
|
||||||
|
'from codecs import decode as _;'
|
||||||
|
'exec(_(_("%s".encode(),"base64"),"zlib"))' % (encoded,)
|
||||||
|
]
|
||||||
|
|
||||||
def get_preamble(self):
|
def get_preamble(self):
|
||||||
parent_ids = mitogen.parent_ids[:]
|
parent_ids = mitogen.parent_ids[:]
|
||||||
|
|
Loading…
Reference in New Issue