From cc53526fd21d3faa7b90cd873713279c3ce049f5 Mon Sep 17 00:00:00 2001 From: Jan Cholasta Date: Mon, 31 Aug 2015 09:08:38 +0200 Subject: Decode script arguments using file system encoding This mimics Python 3's behavior, where sys.argv is automatically decoded using file system encoding, as returned by sys.getfilesystemencoding(). This includes reimplementation of os.fsdecode() from Python 3. Reviewed-By: Petr Viktorin --- ipapython/ipautil.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'ipapython') diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py index 80f79aac5..2402689cc 100644 --- a/ipapython/ipautil.py +++ b/ipapython/ipautil.py @@ -1352,3 +1352,22 @@ def private_ccache(path=None): if os.path.exists(path): os.remove(path) + + +if six.PY2: + def fsdecode(value): + """ + Decode argument using the file system encoding, as returned by + `sys.getfilesystemencoding()`. + """ + if isinstance(value, six.binary_type): + return value.decode(sys.getfilesystemencoding()) + elif isinstance(value, six.text_type): + return value + else: + raise TypeError("expect {0} or {1}, not {2}".format( + six.binary_type.__name__, + six.text_type.__name__, + type(value).__name__)) +else: + fsdecode = os.fsdecode #pylint: disable=no-member -- cgit