[pypy-commit] pypy default: "func.__name__ = ascii_unicode" would work on pypy but not on cpython.
arigo
noreply at buildbot.pypy.org
Mon Apr 13 14:37:04 CEST 2015
Author: Armin Rigo <arigo at tunes.org>
Branch:
Changeset: r76784:9eec547db5f5
Date: 2015-04-13 14:37 +0200
http://bitbucket.org/pypy/pypy/changeset/9eec547db5f5/
Log: "func.__name__ = ascii_unicode" would work on pypy but not on
cpython.
diff --git a/pypy/interpreter/function.py b/pypy/interpreter/function.py
--- a/pypy/interpreter/function.py
+++ b/pypy/interpreter/function.py
@@ -374,14 +374,11 @@
return space.wrap(self.name)
def fset_func_name(self, space, w_name):
- try:
+ if space.isinstance_w(w_name, space.w_str):
self.name = space.str_w(w_name)
- except OperationError, e:
- if e.match(space, space.w_TypeError):
- raise OperationError(space.w_TypeError,
- space.wrap("func_name must be set "
- "to a string object"))
- raise
+ else:
+ raise OperationError(space.w_TypeError,
+ space.wrap("__name__ must be set to a string object"))
def fdel_func_doc(self, space):
self.w_doc = space.w_None
diff --git a/pypy/interpreter/test/test_function.py b/pypy/interpreter/test/test_function.py
--- a/pypy/interpreter/test/test_function.py
+++ b/pypy/interpreter/test/test_function.py
@@ -107,6 +107,12 @@
__name__ = "bar"
assert f.__module__ == "foo"''' in {}
+ def test_set_name(self):
+ def f(): pass
+ f.__name__ = 'g'
+ assert f.func_name == 'g'
+ raises(TypeError, "f.__name__ = u'g'")
+
class AppTestFunction:
def test_simple_call(self):
More information about the pypy-commit
mailing list