From d6bfa94493b897f45ab939208a4a54a259a530e8 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 31 May 2015 08:01:00 +0300 Subject: Issue #21853: Fixed the inspect module in unicode disabled build. --- Lib/inspect.py | 9 +++++++-- Lib/test/test_inspect.py | 10 +++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Lib/inspect.py b/Lib/inspect.py index 9336943..b08e145 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -969,8 +969,13 @@ def getcallargs(func, *positional, **named): assign(varkw, named) elif named: unexpected = next(iter(named)) - if isinstance(unexpected, unicode): - unexpected = unexpected.encode(sys.getdefaultencoding(), 'replace') + try: + unicode + except NameError: + pass + else: + if isinstance(unexpected, unicode): + unexpected = unexpected.encode(sys.getdefaultencoding(), 'replace') raise TypeError("%s() got an unexpected keyword argument '%s'" % (f_name, unexpected)) unassigned = num_args - len([arg for arg in args if is_assigned(arg)]) diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 4130cd0..ecc04cb 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -8,7 +8,7 @@ import datetime from UserList import UserList from UserDict import UserDict -from test.test_support import run_unittest, check_py3k_warnings +from test.test_support import run_unittest, check_py3k_warnings, have_unicode with check_py3k_warnings( ("tuple parameter unpacking has been removed", SyntaxWarning), @@ -17,7 +17,10 @@ with check_py3k_warnings( from test import inspect_fodder2 as mod2 # C module for test_findsource_binary -import unicodedata +try: + import unicodedata +except ImportError: + unicodedata = None # Functions tested in this suite: # ismodule, isclass, ismethod, isfunction, istraceback, isframe, iscode, @@ -798,7 +801,8 @@ class TestGetcallargsFunctions(unittest.TestCase): self.assertEqualException(f, '2, c=3') self.assertEqualException(f, '2, 3, c=4') self.assertEqualException(f, '2, c=4, b=3') - self.assertEqualException(f, '**{u"\u03c0\u03b9": 4}') + if have_unicode: + self.assertEqualException(f, '**{u"\u03c0\u03b9": 4}') # f got multiple values for keyword argument self.assertEqualException(f, '1, a=2') self.assertEqualException(f, '1, **{"a":2}') -- cgit v0.12