This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository python-x2go. commit fb1abc40097023943d4e68018d823489ebff56bd Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Sat Sep 23 23:06:35 2017 +0200 Futurize: Re-add Python2 support back into python-x2go. --- x2go/_paramiko.py | 5 +++-- x2go/backends/control/plain.py | 21 +++++++++++++++++++-- x2go/backends/info/plain.py | 3 +++ x2go/backends/printing/file.py | 1 + x2go/backends/printing/gconf.py | 1 + x2go/backends/printing/winreg.py | 1 + x2go/backends/profiles/base.py | 7 +++++-- x2go/backends/profiles/file.py | 2 +- x2go/backends/profiles/httpbroker.py | 4 +++- x2go/backends/proxy/base.py | 1 + x2go/backends/settings/gconf.py | 1 + x2go/backends/terminal/plain.py | 2 ++ x2go/cache.py | 2 ++ x2go/checkhosts.py | 2 ++ x2go/client.py | 2 ++ x2go/defaults.py | 2 ++ x2go/gevent_subprocess.py | 1 + x2go/inifiles.py | 3 +++ x2go/log.py | 1 + x2go/mimeboxactions.py | 2 ++ x2go/printactions.py | 2 ++ x2go/registry.py | 2 ++ x2go/rforward.py | 1 + x2go/session.py | 2 ++ x2go/sftpserver.py | 1 + x2go/sshproxy.py | 5 ++++- x2go/telekinesis.py | 1 + x2go/utils.py | 5 ++++- x2go/xserver.py | 1 + 29 files changed, 74 insertions(+), 10 deletions(-) diff --git a/x2go/_paramiko.py b/x2go/_paramiko.py index 746fc3d..7d9c958 100644 --- a/x2go/_paramiko.py +++ b/x2go/_paramiko.py @@ -21,6 +21,7 @@ Monkey Patch and feature map for Python Paramiko """ +from builtins import str __PACKAGE__ = 'x2go' @@ -69,9 +70,9 @@ def _SSHClient_save_host_keys(self, filename): f = open(filename, 'w') #f.write('# SSH host keys collected by paramiko\n') _host_keys = self.get_host_keys() - for hostname, keys in _host_keys.items(): + for hostname, keys in list(_host_keys.items()): - for keytype, key in keys.items(): + for keytype, key in list(keys.items()): f.write('%s %s %s\n' % (hostname, keytype, key.get_base64())) f.close() diff --git a/x2go/backends/control/plain.py b/x2go/backends/control/plain.py index 34a32e0..435f5ca 100644 --- a/x2go/backends/control/plain.py +++ b/x2go/backends/control/plain.py @@ -23,6 +23,8 @@ L{X2GoControlSession} class - core functions for handling your individual X2Go s This backend handles X2Go server implementations that respond via server-side PLAIN text output. """ +from builtins import str +from builtins import range __NAME__ = 'x2gocontrolsession-pylib' # modules @@ -532,7 +534,17 @@ class X2GoControlSession(paramiko.SSHClient): sanitized_stdout = '' is_x2go_data = False - for line in raw_stdout.decode().split('\n'): + + # Python 3 needs a decoding from bytestring to (unicode) string + try: + raw_stdout = raw_stdout.decode() + except: + pass + + for line in raw_stdout.split('\n'): + + print (type(line)) + if line.startswith('X2GODATABEGIN:'+cmd_uuid): is_x2go_data = True continue @@ -540,7 +552,12 @@ class X2GoControlSession(paramiko.SSHClient): if line.startswith('X2GODATAEND:'+cmd_uuid): break sanitized_stdout += line + "\n" - _stdout_new = io.StringIO(sanitized_stdout) + try: + # Python 3: + _stdout_new = io.StringIO(sanitized_stdout) + except TypeError: + # Python 2: + _stdout_new = io.StringIO(sanitized_stdout.decode()) _retval = (_stdin, _stdout_new, _stderr) return _retval diff --git a/x2go/backends/info/plain.py b/x2go/backends/info/plain.py index 51558c3..ab7123a 100644 --- a/x2go/backends/info/plain.py +++ b/x2go/backends/info/plain.py @@ -25,6 +25,9 @@ This backend handles X2Go server implementations that respond with session infos via server-side PLAIN text output. """ +from __future__ import print_function +from builtins import str +from builtins import object __NAME__ = 'x2goserversessioninfo-pylib' diff --git a/x2go/backends/printing/file.py b/x2go/backends/printing/file.py index bdb14c6..131b9cc 100644 --- a/x2go/backends/printing/file.py +++ b/x2go/backends/printing/file.py @@ -25,6 +25,7 @@ Use this class in your Python X2Go based applications to access the »printing« configuration of your X2Go client application. """ +from builtins import str __NAME__ = 'x2goprinting-pylib' # modules diff --git a/x2go/backends/printing/gconf.py b/x2go/backends/printing/gconf.py index 556f33f..ce6b568 100644 --- a/x2go/backends/printing/gconf.py +++ b/x2go/backends/printing/gconf.py @@ -25,6 +25,7 @@ Use this class in your Python X2Go based applications to access the »printing« configuration of your X2Go client application. """ +from builtins import object __NAME__ = 'x2goprint-pylib' # modules diff --git a/x2go/backends/printing/winreg.py b/x2go/backends/printing/winreg.py index e0dbc66..56d0c9b 100644 --- a/x2go/backends/printing/winreg.py +++ b/x2go/backends/printing/winreg.py @@ -25,6 +25,7 @@ Use this class in your Python X2Go based applications to access the »printing« configuration of your X2Go client application. """ +from builtins import object __NAME__ = 'x2goprint-pylib' # modules diff --git a/x2go/backends/profiles/base.py b/x2go/backends/profiles/base.py index 3e02492..aa53c69 100644 --- a/x2go/backends/profiles/base.py +++ b/x2go/backends/profiles/base.py @@ -24,6 +24,8 @@ L{X2GoSessionProfiles} is a public API class. Use this class in your Python X2Go applications. """ +from builtins import str +from builtins import object __NAME__ = 'x2gosessionprofiles-pylib' import copy @@ -38,7 +40,7 @@ import x2go.utils as utils from x2go.x2go_exceptions import X2GoProfileException -class X2GoSessionProfiles(): +class X2GoSessionProfiles(object): defaultSessionProfile = copy.deepcopy(_X2GO_SESSIONPROFILE_DEFAULTS) _non_profile_sections = ('embedded') @@ -340,7 +342,8 @@ class X2GoSessionProfiles(): if type(value) is bytes: value = str(value) - if option == 'export' and type(value) is str: + # the type check is a nasty Python2/Python3 hack around unicodes and strings + if option == 'export' and (type(value) is type(u'') or type(value) is type('')): _value = value.replace(',', ';').strip().strip('"').strip().strip(';').strip() value = {} diff --git a/x2go/backends/profiles/file.py b/x2go/backends/profiles/file.py index cb029c3..a91a672 100644 --- a/x2go/backends/profiles/file.py +++ b/x2go/backends/profiles/file.py @@ -86,7 +86,7 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles, inifiles.X2GoIniFile): session_profiles = [ p for p in self.iniConfig.sections() if p not in self._non_profile_sections and p != 'none' ] _session_profiles_dict = {} for session_profile in session_profiles: - for key, default_value in self.defaultSessionProfile.items(): + for key, default_value in list(self.defaultSessionProfile.items()): if not self.iniConfig.has_option(session_profile, key): self._storeValue(session_profile, key, default_value) # update cached meta type session profile information diff --git a/x2go/backends/profiles/httpbroker.py b/x2go/backends/profiles/httpbroker.py index 72b7bdb..4c652a2 100644 --- a/x2go/backends/profiles/httpbroker.py +++ b/x2go/backends/profiles/httpbroker.py @@ -24,6 +24,8 @@ L{X2GoSessionProfiles} is a public API class. Use this class in your Python X2Go applications. """ +from __future__ import print_function +from builtins import str __NAME__ = 'x2gosessionprofiles-pylib' import re @@ -375,7 +377,7 @@ class X2GoSessionProfiles(base.X2GoSessionProfiles): for session_profile in _session_profiles: session_profile = str(session_profile) - for key, default_value in self.defaultSessionProfile.items(): + for key, default_value in list(self.defaultSessionProfile.items()): key = str(key) if type(default_value) is bytes: default_value = str(default_value) diff --git a/x2go/backends/proxy/base.py b/x2go/backends/proxy/base.py index 10c4c21..77ba67f 100644 --- a/x2go/backends/proxy/base.py +++ b/x2go/backends/proxy/base.py @@ -21,6 +21,7 @@ X2GoProxy class - proxying your connection through NX3 and others. """ +from builtins import str __NAME__ = 'x2goproxy-pylib' # modules diff --git a/x2go/backends/settings/gconf.py b/x2go/backends/settings/gconf.py index 9a4b62f..759b47c 100644 --- a/x2go/backends/settings/gconf.py +++ b/x2go/backends/settings/gconf.py @@ -26,6 +26,7 @@ in your Python X2Go based applications to access the »settings« configuration file of your X2Go client application. """ +from builtins import object __NAME__ = 'x2gosettings-pylib' # modules diff --git a/x2go/backends/terminal/plain.py b/x2go/backends/terminal/plain.py index c80565f..82e71c4 100644 --- a/x2go/backends/terminal/plain.py +++ b/x2go/backends/terminal/plain.py @@ -24,6 +24,8 @@ This backend handles X2Go server implementations that respond with session infos via server-side PLAIN text output. """ +from builtins import str +from builtins import object __NAME__ = 'x2goterminalsession-pylib' # modules diff --git a/x2go/cache.py b/x2go/cache.py index b04fca8..c8359c0 100644 --- a/x2go/cache.py +++ b/x2go/cache.py @@ -21,6 +21,8 @@ X2GoListSessionCache class - caching X2Go session information. """ +from builtins import str +from builtins import object __NAME__ = 'x2gocache-pylib' # modules diff --git a/x2go/checkhosts.py b/x2go/checkhosts.py index b118279..825996c 100644 --- a/x2go/checkhosts.py +++ b/x2go/checkhosts.py @@ -21,6 +21,8 @@ Providing mechanisms to C{X2GoControlSession*} backends for checking host validity. """ +from builtins import str +from builtins import range __NAME__ = 'x2gocheckhosts-pylib' # modules diff --git a/x2go/client.py b/x2go/client.py index fa3c53e..6cff86f 100644 --- a/x2go/client.py +++ b/x2go/client.py @@ -115,6 +115,8 @@ Session Suspending/Terminating x2go_client.terminate_session(x2go_sess_uuid) """ +from builtins import str +from builtins import object __NAME__ = 'x2goclient-pylib' #modules diff --git a/x2go/defaults.py b/x2go/defaults.py index 3d03481..2b9ed83 100644 --- a/x2go/defaults.py +++ b/x2go/defaults.py @@ -21,6 +21,8 @@ Default variables and values for Python X2Go. """ +from builtins import str +from builtins import range __NAME__ = 'x2godefaults-pylib' import os diff --git a/x2go/gevent_subprocess.py b/x2go/gevent_subprocess.py index 8e823df..24d3bde 100644 --- a/x2go/gevent_subprocess.py +++ b/x2go/gevent_subprocess.py @@ -38,6 +38,7 @@ """Implementation of the standard :mod:`subprocess` module that spawns greenlets""" +from builtins import object import errno import sys import fcntl, os diff --git a/x2go/inifiles.py b/x2go/inifiles.py index 6b9c268..ea06f8f 100644 --- a/x2go/inifiles.py +++ b/x2go/inifiles.py @@ -27,6 +27,9 @@ X2GoProcessIniFile - helper class for parsing .ini files """ +from __future__ import print_function +from builtins import str +from builtins import object __NAME__ = 'x2goinifiles-pylib' # modules diff --git a/x2go/log.py b/x2go/log.py index 20bc3b0..1b10c3b 100644 --- a/x2go/log.py +++ b/x2go/log.py @@ -21,6 +21,7 @@ X2GoLogger class - flexible handling of log and debug output. """ +from builtins import object __NAME__ = 'x2gologger-pylib' # modules diff --git a/x2go/mimeboxactions.py b/x2go/mimeboxactions.py index cc03c08..37b9018 100644 --- a/x2go/mimeboxactions.py +++ b/x2go/mimeboxactions.py @@ -22,6 +22,8 @@ For MIME box jobs there are currently three handling actions available: L{X2GoMIMEboxActionOPEN}, L{X2GoMIMEboxActionOPENWITH} and L{X2GoMIMEboxActionSAVEAS}. """ +from builtins import str +from builtins import object __NAME__ = 'x2gomimeboxactions-pylib' # modules diff --git a/x2go/printactions.py b/x2go/printactions.py index c730eba..468ec09 100644 --- a/x2go/printactions.py +++ b/x2go/printactions.py @@ -25,6 +25,8 @@ over to a custom (print) command. This is defined by four print action classes L{X2GoPrintActionPRINTCMD}). """ +from builtins import str +from builtins import object __NAME__ = 'x2goprintactions-pylib' # modules diff --git a/x2go/registry.py b/x2go/registry.py index 6dde80d..5ad68bc 100644 --- a/x2go/registry.py +++ b/x2go/registry.py @@ -21,6 +21,8 @@ X2GoSessionRegistry class - the X2GoClient's session registry backend """ +from builtins import str +from builtins import object __NAME__ = 'x2gosessregistry-pylib' import os diff --git a/x2go/rforward.py b/x2go/rforward.py index 77146f5..5c84b16 100644 --- a/x2go/rforward.py +++ b/x2go/rforward.py @@ -21,6 +21,7 @@ X2Go sshfs for folder sharing and mounting remote devices in X2Go terminal server sessions. """ +from builtins import str __NAME__ = 'x2gorevtunnel-pylib' # modules diff --git a/x2go/session.py b/x2go/session.py index 08541a6..dedac10 100644 --- a/x2go/session.py +++ b/x2go/session.py @@ -48,6 +48,8 @@ simple steps::
while True: gevent.sleep(1)
""" +from builtins import str +from builtins import object __NAME__ = 'x2gosession-pylib' diff --git a/x2go/sftpserver.py b/x2go/sftpserver.py index 3e66b9a..cfc0aee 100644 --- a/x2go/sftpserver.py +++ b/x2go/sftpserver.py @@ -29,6 +29,7 @@ The Python X2Go sFTP server code was originally written by Richard Murri, for further information see his website: http://www.richardmurri.com """ +from builtins import str __NAME__ = "x2gosftpserver-pylib" import os diff --git a/x2go/sshproxy.py b/x2go/sshproxy.py index 690c225..0b86159 100644 --- a/x2go/sshproxy.py +++ b/x2go/sshproxy.py @@ -21,6 +21,9 @@ L{X2GoSSHProxy} class - providing a forwarding tunnel for connecting to servers behind firewalls. """ +from __future__ import print_function +from builtins import str +from builtins import range __NAME__ = 'x2gosshproxy-pylib' # modules @@ -193,7 +196,7 @@ class X2GoSSHProxy(paramiko.SSHClient, threading.Thread): remote_host = [remote_host] if remote_host and type(remote_host) in (list, tuple): remote_host = random.choice(remote_host) - print("LOCAL_HOST: ", local_host) + print(("LOCAL_HOST: ", local_host)) self.local_host = local_host self.local_port = int(local_port) self.remote_host = remote_host diff --git a/x2go/telekinesis.py b/x2go/telekinesis.py index babb747..1ce9564 100644 --- a/x2go/telekinesis.py +++ b/x2go/telekinesis.py @@ -21,6 +21,7 @@ X2GoTelekinesisClient class - Connect to Telekinesis Server on X2Go Server. """ +from builtins import str __NAME__ = 'x2gotelekinesisclient-pylib' # modules diff --git a/x2go/utils.py b/x2go/utils.py index 5b89cd5..1b9fca1 100644 --- a/x2go/utils.py +++ b/x2go/utils.py @@ -21,6 +21,9 @@ Python X2Go helper functions, constants etc. """ +from builtins import str +from builtins import range +from builtins import object __NAME__ = 'x2goutils-pylib' import sys @@ -229,7 +232,7 @@ def _convert_SessionProfileOptions_2_SessionParams(options): '4': 'lan', } - for opt, val in options.items(): + for opt, val in list(options.items()): # rename options if necessary if opt in list(_rename_dict.keys()): diff --git a/x2go/xserver.py b/x2go/xserver.py index a9e577b..9b0c761 100644 --- a/x2go/xserver.py +++ b/x2go/xserver.py @@ -1,3 +1,4 @@ +from builtins import str # -*- coding: utf-8 -*- # Copyright (C) 2010-2016 by Mike Gabriel <mike.gabriel@das-netzwerkteam.de> -- Alioth's /srv/git/code.x2go.org/python-x2go.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/python-x2go.git