[pypy-commit] pypy default: merge heads
bivab
noreply at buildbot.pypy.org
Wed Jun 12 13:10:52 CEST 2013
Author: David Schneider <david.schneider at picle.org>
Branch:
Changeset: r64862:574a2ace6557
Date: 2013-06-12 04:21 -0500
http://bitbucket.org/pypy/pypy/changeset/574a2ace6557/
Log: merge heads
diff too long, truncating to 2000 out of 7890 lines
diff --git a/lib-python/2.7/distutils/command/build_ext.py b/lib-python/2.7/distutils/command/build_ext.py
--- a/lib-python/2.7/distutils/command/build_ext.py
+++ b/lib-python/2.7/distutils/command/build_ext.py
@@ -8,7 +8,7 @@
__revision__ = "$Id$"
-import sys, os, string, re
+import sys, os, string, re, imp
from types import *
from site import USER_BASE, USER_SITE
from distutils.core import Command
@@ -33,6 +33,11 @@
from distutils.ccompiler import show_compilers
show_compilers()
+def _get_c_extension_suffix():
+ for ext, mod, typ in imp.get_suffixes():
+ if typ == imp.C_EXTENSION:
+ return ext
+
class build_ext (Command):
@@ -677,10 +682,18 @@
# OS/2 has an 8 character module (extension) limit :-(
if os.name == "os2":
ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8]
+ # PyPy tweak: first try to get the C extension suffix from
+ # 'imp'. If it fails we fall back to the 'SO' config var, like
+ # the previous version of this code did. This should work for
+ # CPython too. The point is that on PyPy with cpyext, the
+ # config var 'SO' is just ".so" but we want to return
+ # ".pypy-VERSION.so" instead.
+ so_ext = _get_c_extension_suffix()
+ if so_ext is None:
+ so_ext = get_config_var('SO') # fall-back
# extensions in debug_mode are named 'module_d.pyd' under windows
- so_ext = get_config_var('SO')
if os.name == 'nt' and self.debug:
- return os.path.join(*ext_path) + '_d' + so_ext
+ so_ext = '_d.pyd'
return os.path.join(*ext_path) + so_ext
def get_export_symbols (self, ext):
diff --git a/lib-python/2.7/distutils/sysconfig_pypy.py b/lib-python/2.7/distutils/sysconfig_pypy.py
--- a/lib-python/2.7/distutils/sysconfig_pypy.py
+++ b/lib-python/2.7/distutils/sysconfig_pypy.py
@@ -12,7 +12,6 @@
import sys
import os
-import imp
from distutils.errors import DistutilsPlatformError
@@ -58,16 +57,11 @@
_config_vars = None
-def _get_so_extension():
- for ext, mod, typ in imp.get_suffixes():
- if typ == imp.C_EXTENSION:
- return ext
-
def _init_posix():
"""Initialize the module as appropriate for POSIX systems."""
g = {}
g['EXE'] = ""
- g['SO'] = _get_so_extension() or ".so"
+ g['SO'] = ".so"
g['SOABI'] = g['SO'].rsplit('.')[0]
g['LIBDIR'] = os.path.join(sys.prefix, 'lib')
g['CC'] = "gcc -pthread" # -pthread might not be valid on OS/X, check
@@ -80,7 +74,7 @@
"""Initialize the module as appropriate for NT"""
g = {}
g['EXE'] = ".exe"
- g['SO'] = _get_so_extension() or ".pyd"
+ g['SO'] = ".pyd"
g['SOABI'] = g['SO'].rsplit('.')[0]
global _config_vars
diff --git a/lib-python/2.7/logging/__init__.py b/lib-python/2.7/logging/__init__.py
--- a/lib-python/2.7/logging/__init__.py
+++ b/lib-python/2.7/logging/__init__.py
@@ -151,6 +151,8 @@
'DEBUG': DEBUG,
'NOTSET': NOTSET,
}
+_levelNames = dict(_levelToName)
+_levelNames.update(_nameToLevel) # backward compatibility
def getLevelName(level):
"""
diff --git a/lib-python/2.7/opcode.py b/lib-python/2.7/opcode.py
--- a/lib-python/2.7/opcode.py
+++ b/lib-python/2.7/opcode.py
@@ -193,5 +193,6 @@
hasname.append(201)
def_op('CALL_METHOD', 202) # #args not including 'self'
def_op('BUILD_LIST_FROM_ARG', 203)
+jrel_op('JUMP_IF_NOT_DEBUG', 204) # jump over assert statements
del def_op, name_op, jrel_op, jabs_op
diff --git a/lib-python/2.7/socket.py b/lib-python/2.7/socket.py
--- a/lib-python/2.7/socket.py
+++ b/lib-python/2.7/socket.py
@@ -96,6 +96,7 @@
_realsocket = socket
+_type = type
# WSA error codes
if sys.platform.lower().startswith("win"):
@@ -173,31 +174,37 @@
__doc__ = _realsocket.__doc__
+ __slots__ = ["_sock", "__weakref__"]
+
def __init__(self, family=AF_INET, type=SOCK_STREAM, proto=0, _sock=None):
if _sock is None:
_sock = _realsocket(family, type, proto)
+ elif _type(_sock) is _realsocket:
+ _sock._reuse()
+ # PyPy note about refcounting: implemented with _reuse()/_drop()
+ # on the class '_socket.socket'. Python 3 did it differently
+ # with a reference counter on this class 'socket._socketobject'
+ # instead, but it is a less compatible change (breaks eventlet).
self._sock = _sock
- self._io_refs = 0
- self._closed = False
def send(self, data, flags=0):
- return self._sock.send(data, flags=flags)
+ return self._sock.send(data, flags)
send.__doc__ = _realsocket.send.__doc__
def recv(self, buffersize, flags=0):
- return self._sock.recv(buffersize, flags=flags)
+ return self._sock.recv(buffersize, flags)
recv.__doc__ = _realsocket.recv.__doc__
def recv_into(self, buffer, nbytes=0, flags=0):
- return self._sock.recv_into(buffer, nbytes=nbytes, flags=flags)
+ return self._sock.recv_into(buffer, nbytes, flags)
recv_into.__doc__ = _realsocket.recv_into.__doc__
def recvfrom(self, buffersize, flags=0):
- return self._sock.recvfrom(buffersize, flags=flags)
+ return self._sock.recvfrom(buffersize, flags)
recvfrom.__doc__ = _realsocket.recvfrom.__doc__
def recvfrom_into(self, buffer, nbytes=0, flags=0):
- return self._sock.recvfrom_into(buffer, nbytes=nbytes, flags=flags)
+ return self._sock.recvfrom_into(buffer, nbytes, flags)
recvfrom_into.__doc__ = _realsocket.recvfrom_into.__doc__
def sendto(self, data, param2, param3=None):
@@ -208,13 +215,17 @@
sendto.__doc__ = _realsocket.sendto.__doc__
def close(self):
- # This function should not reference any globals. See issue #808164.
+ s = self._sock
+ if type(s) is _realsocket:
+ s._drop()
self._sock = _closedsocket()
close.__doc__ = _realsocket.close.__doc__
def accept(self):
sock, addr = self._sock.accept()
- return _socketobject(_sock=sock), addr
+ sockobj = _socketobject(_sock=sock)
+ sock._drop() # already a copy in the _socketobject()
+ return sockobj, addr
accept.__doc__ = _realsocket.accept.__doc__
def dup(self):
@@ -228,24 +239,7 @@
Return a regular file object corresponding to the socket. The mode
and bufsize arguments are as for the built-in open() function."""
- self._io_refs += 1
- return _fileobject(self, mode, bufsize)
-
- def _decref_socketios(self):
- if self._io_refs > 0:
- self._io_refs -= 1
- if self._closed:
- self.close()
-
- def _real_close(self):
- # This function should not reference any globals. See issue #808164.
- self._sock.close()
-
- def close(self):
- # This function should not reference any globals. See issue #808164.
- self._closed = True
- if self._io_refs <= 0:
- self._real_close()
+ return _fileobject(self._sock, mode, bufsize)
family = property(lambda self: self._sock.family, doc="the socket family")
type = property(lambda self: self._sock.type, doc="the socket type")
@@ -286,6 +280,8 @@
"_close"]
def __init__(self, sock, mode='rb', bufsize=-1, close=False):
+ if type(sock) is _realsocket:
+ sock._reuse()
self._sock = sock
self.mode = mode # Not actually used in this version
if bufsize < 0:
@@ -320,16 +316,11 @@
if self._sock:
self.flush()
finally:
- if self._sock:
- if self._close:
- self._sock.close()
- else:
- try:
- self._sock._decref_socketios()
- except AttributeError:
- pass # bah, someone built a _fileobject manually
- # with some unexpected replacement of the
- # _socketobject class
+ s = self._sock
+ if type(s) is _realsocket:
+ s._drop()
+ if self._close:
+ self._sock.close()
self._sock = None
def __del__(self):
diff --git a/lib-python/2.7/test/test_code.py b/lib-python/2.7/test/test_code.py
--- a/lib-python/2.7/test/test_code.py
+++ b/lib-python/2.7/test/test_code.py
@@ -75,7 +75,7 @@
cellvars: ()
freevars: ()
nlocals: 0
-flags: 67
+flags: 1048643
consts: ("'doc string'", 'None')
"""
diff --git a/lib-python/2.7/test/test_dis.py b/lib-python/2.7/test/test_dis.py
--- a/lib-python/2.7/test/test_dis.py
+++ b/lib-python/2.7/test/test_dis.py
@@ -53,25 +53,26 @@
pass
dis_bug1333982 = """\
- %-4d 0 LOAD_CONST 1 (0)
- 3 POP_JUMP_IF_TRUE 41
- 6 LOAD_GLOBAL 0 (AssertionError)
- 9 LOAD_FAST 0 (x)
- 12 BUILD_LIST_FROM_ARG 0
- 15 GET_ITER
- >> 16 FOR_ITER 12 (to 31)
- 19 STORE_FAST 1 (s)
- 22 LOAD_FAST 1 (s)
- 25 LIST_APPEND 2
- 28 JUMP_ABSOLUTE 16
+ %-4d 0 JUMP_IF_NOT_DEBUG 41 (to 44)
+ 3 LOAD_CONST 1 (0)
+ 6 POP_JUMP_IF_TRUE 44
+ 9 LOAD_GLOBAL 0 (AssertionError)
+ 12 LOAD_FAST 0 (x)
+ 15 BUILD_LIST_FROM_ARG 0
+ 18 GET_ITER
+ >> 19 FOR_ITER 12 (to 34)
+ 22 STORE_FAST 1 (s)
+ 25 LOAD_FAST 1 (s)
+ 28 LIST_APPEND 2
+ 31 JUMP_ABSOLUTE 19
- %-4d >> 31 LOAD_CONST 2 (1)
- 34 BINARY_ADD
- 35 CALL_FUNCTION 1
- 38 RAISE_VARARGS 1
+ %-4d >> 34 LOAD_CONST 2 (1)
+ 37 BINARY_ADD
+ 38 CALL_FUNCTION 1
+ 41 RAISE_VARARGS 1
- %-4d >> 41 LOAD_CONST 0 (None)
- 44 RETURN_VALUE
+ %-4d >> 44 LOAD_CONST 0 (None)
+ 47 RETURN_VALUE
"""%(bug1333982.func_code.co_firstlineno + 1,
bug1333982.func_code.co_firstlineno + 2,
bug1333982.func_code.co_firstlineno + 3)
diff --git a/lib_pypy/_ctypes/pointer.py b/lib_pypy/_ctypes/pointer.py
--- a/lib_pypy/_ctypes/pointer.py
+++ b/lib_pypy/_ctypes/pointer.py
@@ -120,6 +120,7 @@
return self._buffer[0] != 0
contents = property(getcontents, setcontents)
+ _obj = property(getcontents) # byref interface
def _as_ffi_pointer_(self, ffitype):
return as_ffi_pointer(self, ffitype)
diff --git a/lib_pypy/_ctypes_test.py b/lib_pypy/_ctypes_test.py
--- a/lib_pypy/_ctypes_test.py
+++ b/lib_pypy/_ctypes_test.py
@@ -1,60 +1,7 @@
-import os, sys
-import tempfile
-
-def compile_shared():
- """Compile '_ctypes_test.c' into an extension module, and import it
- """
- thisdir = os.path.dirname(__file__)
- output_dir = tempfile.mkdtemp()
-
- from distutils.ccompiler import new_compiler
- from distutils import sysconfig
-
- compiler = new_compiler()
- compiler.output_dir = output_dir
-
- # Compile .c file
- include_dir = os.path.join(thisdir, '..', 'include')
- if sys.platform == 'win32':
- ccflags = ['-D_CRT_SECURE_NO_WARNINGS']
- else:
- ccflags = ['-fPIC', '-Wimplicit-function-declaration']
- res = compiler.compile([os.path.join(thisdir, '_ctypes_test.c')],
- include_dirs=[include_dir],
- extra_preargs=ccflags)
- object_filename = res[0]
-
- # set link options
- output_filename = '_ctypes_test' + sysconfig.get_config_var('SO')
- if sys.platform == 'win32':
- # XXX libpypy-c.lib is currently not installed automatically
- library = os.path.join(thisdir, '..', 'include', 'libpypy-c')
- if not os.path.exists(library + '.lib'):
- #For a nightly build
- library = os.path.join(thisdir, '..', 'include', 'python27')
- if not os.path.exists(library + '.lib'):
- # For a local translation
- library = os.path.join(thisdir, '..', 'pypy', 'goal', 'libpypy-c')
- libraries = [library, 'oleaut32']
- extra_ldargs = ['/MANIFEST', # needed for VC10
- '/EXPORT:init_ctypes_test']
- else:
- libraries = []
- extra_ldargs = []
-
- # link the dynamic library
- compiler.link_shared_object(
- [object_filename],
- output_filename,
- libraries=libraries,
- extra_preargs=extra_ldargs)
-
- # Now import the newly created library, it will replace our module in sys.modules
- import imp
- fp, filename, description = imp.find_module('_ctypes_test', path=[output_dir])
- imp.load_module('_ctypes_test', fp, filename, description)
-
-
+try:
+ import cpyext
+except ImportError:
+ raise ImportError("No module named '_ctypes_test'")
try:
import _ctypes
_ctypes.PyObj_FromPtr = None
@@ -62,4 +9,5 @@
except ImportError:
pass # obscure condition of _ctypes_test.py being imported by py.test
else:
- compile_shared()
+ import _pypy_testcapi
+ _pypy_testcapi.compile_shared('_ctypes_test.c', '_ctypes_test')
diff --git a/lib_pypy/_curses.py b/lib_pypy/_curses.py
--- a/lib_pypy/_curses.py
+++ b/lib_pypy/_curses.py
@@ -476,6 +476,15 @@
def _chtype(ch):
return int(ffi.cast("chtype", ch))
+def _texttype(text):
+ if isinstance(text, str):
+ return text
+ elif isinstance(text, unicode):
+ return str(text) # default encoding
+ else:
+ raise TypeError("str or unicode expected, got a '%s' object"
+ % (type(text).__name__,))
+
def _extract_yx(args):
if len(args) >= 2:
@@ -589,6 +598,7 @@
@_argspec(1, 1, 2)
def addstr(self, y, x, text, attr=None):
+ text = _texttype(text)
if attr is not None:
attr_old = lib.getattrs(self._win)
lib.wattrset(self._win, attr)
@@ -602,6 +612,7 @@
@_argspec(2, 1, 2)
def addnstr(self, y, x, text, n, attr=None):
+ text = _texttype(text)
if attr is not None:
attr_old = lib.getattrs(self._win)
lib.wattrset(self._win, attr)
@@ -780,6 +791,7 @@
@_argspec(1, 1, 2)
def insstr(self, y, x, text, attr=None):
+ text = _texttype(text)
if attr is not None:
attr_old = lib.getattrs(self._win)
lib.wattrset(self._win, attr)
@@ -793,6 +805,7 @@
@_argspec(2, 1, 2)
def insnstr(self, y, x, text, n, attr=None):
+ text = _texttype(text)
if attr is not None:
attr_old = lib.getattrs(self._win)
lib.wattrset(self._win, attr)
@@ -1197,6 +1210,7 @@
def putp(text):
+ text = _texttype(text)
return _check_ERR(lib.putp(text), "putp")
diff --git a/lib_pypy/_pypy_irc_topic.py b/lib_pypy/_pypy_irc_topic.py
--- a/lib_pypy/_pypy_irc_topic.py
+++ b/lib_pypy/_pypy_irc_topic.py
@@ -1,4 +1,4 @@
-"""eclguba: flagnk naq frznagvpf bs clguba, fcrrq bs p, erfgevpgvbaf bs wnin naq pbzcvyre reebe zrffntrf nf crargenoyr nf ZHZCF
+__doc__ = """eclguba: flagnk naq frznagvpf bs clguba, fcrrq bs p, erfgevpgvbaf bs wnin naq pbzcvyre reebe zrffntrf nf crargenoyr nf ZHZCF
pglcrf unf n fcva bs 1/3
' ' vf n fcnpr gbb
Clguba 2.k rfg cerfdhr zbeg, ivir Clguba!
diff --git a/lib_pypy/_pypy_testcapi.py b/lib_pypy/_pypy_testcapi.py
new file mode 100644
--- /dev/null
+++ b/lib_pypy/_pypy_testcapi.py
@@ -0,0 +1,61 @@
+import os, sys, imp
+import tempfile
+
+def _get_c_extension_suffix():
+ for ext, mod, typ in imp.get_suffixes():
+ if typ == imp.C_EXTENSION:
+ return ext
+
+
+def compile_shared(csource, modulename):
+ """Compile '_testcapi.c' or '_ctypes_test.c' into an extension module,
+ and import it.
+ """
+ thisdir = os.path.dirname(__file__)
+ output_dir = tempfile.mkdtemp()
+
+ from distutils.ccompiler import new_compiler
+
+ compiler = new_compiler()
+ compiler.output_dir = output_dir
+
+ # Compile .c file
+ include_dir = os.path.join(thisdir, '..', 'include')
+ if sys.platform == 'win32':
+ ccflags = ['-D_CRT_SECURE_NO_WARNINGS']
+ else:
+ ccflags = ['-fPIC', '-Wimplicit-function-declaration']
+ res = compiler.compile([os.path.join(thisdir, csource)],
+ include_dirs=[include_dir],
+ extra_preargs=ccflags)
+ object_filename = res[0]
+
+ # set link options
+ output_filename = modulename + _get_c_extension_suffix()
+ if sys.platform == 'win32':
+ # XXX libpypy-c.lib is currently not installed automatically
+ library = os.path.join(thisdir, '..', 'include', 'libpypy-c')
+ if not os.path.exists(library + '.lib'):
+ #For a nightly build
+ library = os.path.join(thisdir, '..', 'include', 'python27')
+ if not os.path.exists(library + '.lib'):
+ # For a local translation
+ library = os.path.join(thisdir, '..', 'pypy', 'goal', 'libpypy-c')
+ libraries = [library, 'oleaut32']
+ extra_ldargs = ['/MANIFEST', # needed for VC10
+ '/EXPORT:init' + modulename]
+ else:
+ libraries = []
+ extra_ldargs = []
+
+ # link the dynamic library
+ compiler.link_shared_object(
+ [object_filename],
+ output_filename,
+ libraries=libraries,
+ extra_preargs=extra_ldargs)
+
+ # Now import the newly created library, it will replace the original
+ # module in sys.modules
+ fp, filename, description = imp.find_module(modulename, path=[output_dir])
+ imp.load_module(modulename, fp, filename, description)
diff --git a/lib_pypy/_testcapi.py b/lib_pypy/_testcapi.py
--- a/lib_pypy/_testcapi.py
+++ b/lib_pypy/_testcapi.py
@@ -1,62 +1,7 @@
-import os, sys
-import tempfile
-
-def compile_shared():
- """Compile '_testcapi.c' into an extension module, and import it
- """
- thisdir = os.path.dirname(__file__)
- output_dir = tempfile.mkdtemp()
-
- from distutils.ccompiler import new_compiler
- from distutils import sysconfig
-
- compiler = new_compiler()
- compiler.output_dir = output_dir
-
- # Compile .c file
- include_dir = os.path.join(thisdir, '..', 'include')
- if sys.platform == 'win32':
- ccflags = ['-D_CRT_SECURE_NO_WARNINGS']
- else:
- ccflags = ['-fPIC', '-Wimplicit-function-declaration']
- res = compiler.compile([os.path.join(thisdir, '_testcapimodule.c')],
- include_dirs=[include_dir],
- extra_preargs=ccflags)
- object_filename = res[0]
-
- # set link options
- output_filename = '_testcapi' + sysconfig.get_config_var('SO')
- if sys.platform == 'win32':
- # XXX libpypy-c.lib is currently not installed automatically
- library = os.path.join(thisdir, '..', 'include', 'libpypy-c')
- if not os.path.exists(library + '.lib'):
- #For a nightly build
- library = os.path.join(thisdir, '..', 'include', 'python27')
- if not os.path.exists(library + '.lib'):
- # For a local translation
- library = os.path.join(thisdir, '..', 'pypy', 'goal', 'libpypy-c')
- libraries = [library, 'oleaut32']
- extra_ldargs = ['/MANIFEST', # needed for VC10
- '/EXPORT:init_testcapi']
- else:
- libraries = []
- extra_ldargs = []
-
- # link the dynamic library
- compiler.link_shared_object(
- [object_filename],
- output_filename,
- libraries=libraries,
- extra_preargs=extra_ldargs)
-
- # Now import the newly created library, it will replace our module in sys.modules
- import imp
- fp, filename, description = imp.find_module('_testcapi', path=[output_dir])
- imp.load_module('_testcapi', fp, filename, description)
-
try:
import cpyext
except ImportError:
raise ImportError("No module named '_testcapi'")
else:
- compile_shared()
+ import _pypy_testcapi
+ _pypy_testcapi.compile_shared('_testcapimodule.c', '_testcapi')
diff --git a/lib_pypy/cffi/api.py b/lib_pypy/cffi/api.py
--- a/lib_pypy/cffi/api.py
+++ b/lib_pypy/cffi/api.py
@@ -361,13 +361,13 @@
backend = ffi._backend
try:
if '.' not in name and '/' not in name:
- raise OSError
+ raise OSError("library not found: %r" % (name,))
backendlib = backend.load_library(name, flags)
except OSError:
import ctypes.util
path = ctypes.util.find_library(name)
if path is None:
- raise OSError("library not found: %r" % (name,))
+ raise # propagate the original OSError
backendlib = backend.load_library(path, flags)
copied_enums = []
#
diff --git a/lib_pypy/cffi/vengine_cpy.py b/lib_pypy/cffi/vengine_cpy.py
--- a/lib_pypy/cffi/vengine_cpy.py
+++ b/lib_pypy/cffi/vengine_cpy.py
@@ -156,6 +156,9 @@
class FFILibrary(object):
_cffi_python_module = module
_cffi_ffi = self.ffi
+ _cffi_dir = []
+ def __dir__(self):
+ return FFILibrary._cffi_dir + list(self.__dict__)
library = FFILibrary()
module._cffi_setup(lst, ffiplatform.VerificationError, library)
#
@@ -701,7 +704,8 @@
return ptr[0]
def setter(library, value):
ptr[0] = value
- setattr(library.__class__, name, property(getter, setter))
+ setattr(type(library), name, property(getter, setter))
+ type(library)._cffi_dir.append(name)
# ----------
diff --git a/lib_pypy/cffi/vengine_gen.py b/lib_pypy/cffi/vengine_gen.py
--- a/lib_pypy/cffi/vengine_gen.py
+++ b/lib_pypy/cffi/vengine_gen.py
@@ -74,6 +74,9 @@
class FFILibrary(types.ModuleType):
_cffi_generic_module = module
_cffi_ffi = self.ffi
+ _cffi_dir = []
+ def __dir__(self):
+ return FFILibrary._cffi_dir
library = FFILibrary("")
#
# finally, call the loaded_gen_xxx() functions. This will set
@@ -168,21 +171,22 @@
newfunction = self._load_constant(False, tp, name, module)
else:
indirections = []
- if any(isinstance(type, model.StructOrUnion) for type in tp.args):
+ if any(isinstance(typ, model.StructOrUnion) for typ in tp.args):
indirect_args = []
- for i, type in enumerate(tp.args):
- if isinstance(type, model.StructOrUnion):
- type = model.PointerType(type)
- indirections.append((i, type))
- indirect_args.append(type)
+ for i, typ in enumerate(tp.args):
+ if isinstance(typ, model.StructOrUnion):
+ typ = model.PointerType(typ)
+ indirections.append((i, typ))
+ indirect_args.append(typ)
tp = model.FunctionPtrType(tuple(indirect_args),
tp.result, tp.ellipsis)
BFunc = self.ffi._get_cached_btype(tp)
wrappername = '_cffi_f_%s' % name
newfunction = module.load_function(BFunc, wrappername)
- for i, type in indirections:
- newfunction = self._make_struct_wrapper(newfunction, i, type)
+ for i, typ in indirections:
+ newfunction = self._make_struct_wrapper(newfunction, i, typ)
setattr(library, name, newfunction)
+ type(library)._cffi_dir.append(name)
def _make_struct_wrapper(self, oldfunc, i, tp):
backend = self.ffi._backend
@@ -390,6 +394,7 @@
is_int = isinstance(tp, model.PrimitiveType) and tp.is_integer_type()
value = self._load_constant(is_int, tp, name, module)
setattr(library, name, value)
+ type(library)._cffi_dir.append(name)
# ----------
# enums
@@ -437,6 +442,7 @@
def _loaded_gen_enum(self, tp, name, module, library):
for enumerator, enumvalue in zip(tp.enumerators, tp.enumvalues):
setattr(library, enumerator, enumvalue)
+ type(library)._cffi_dir.append(enumerator)
# ----------
# macros: for now only for integers
@@ -450,6 +456,7 @@
def _loaded_gen_macro(self, tp, name, module, library):
value = self._load_constant(True, tp, name, module)
setattr(library, name, value)
+ type(library)._cffi_dir.append(name)
# ----------
# global variables
@@ -475,6 +482,7 @@
BArray = self.ffi._get_cached_btype(tp)
value = self.ffi.cast(BArray, value)
setattr(library, name, value)
+ type(library)._cffi_dir.append(name)
return
# remove ptr=<cdata 'int *'> from the library instance, and replace
# it by a property on the class, which reads/writes into ptr[0].
@@ -486,7 +494,8 @@
return ptr[0]
def setter(library, value):
ptr[0] = value
- setattr(library.__class__, name, property(getter, setter))
+ setattr(type(library), name, property(getter, setter))
+ type(library)._cffi_dir.append(name)
cffimod_header = r'''
#include <stdio.h>
diff --git a/lib_pypy/greenlet.egg-info b/lib_pypy/greenlet.egg-info
new file mode 100644
--- /dev/null
+++ b/lib_pypy/greenlet.egg-info
@@ -0,0 +1,10 @@
+Metadata-Version: 1.0
+Name: greenlet
+Version: 0.4.0
+Summary: Lightweight in-process concurrent programming
+Home-page: https://github.com/python-greenlet/greenlet
+Author: Ralf Schmitt (for CPython), PyPy team
+Author-email: pypy-dev at python.org
+License: MIT License
+Description: UNKNOWN
+Platform: UNKNOWN
diff --git a/pypy/bin/pyinteractive.py b/pypy/bin/pyinteractive.py
--- a/pypy/bin/pyinteractive.py
+++ b/pypy/bin/pyinteractive.py
@@ -27,7 +27,8 @@
BoolOption("completer", "use readline commandline completer",
default=False, cmdline="-C"),
BoolOption("optimize",
- "dummy optimization flag for compatibility with CPython",
+ "skip assert statements and remove docstrings when importing modules"
+ " (this is -OO in regular CPython)",
default=False, cmdline="-O"),
BoolOption("no_site_import", "do not 'import site' on initialization",
default=False, cmdline="-S"),
@@ -94,6 +95,17 @@
space.setitem(space.sys.w_dict, space.wrap('executable'),
space.wrap(argv[0]))
+ if interactiveconfig.optimize:
+ #change the optimize flag's value and set __debug__ to False
+ space.appexec([], """():
+ import sys
+ flags = list(sys.flags)
+ flags[6] = 2
+ sys.flags = type(sys.flags)(flags)
+ import __pypy__
+ __pypy__.set_debug(False)
+ """)
+
# call pypy_find_stdlib: the side-effect is that it sets sys.prefix and
# sys.exec_prefix
executable = argv[0]
diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
--- a/pypy/config/pypyoption.py
+++ b/pypy/config/pypyoption.py
@@ -32,11 +32,10 @@
"rctime" , "select", "zipimport", "_lsprof",
"crypt", "signal", "_rawffi", "termios", "zlib", "bz2",
"struct", "_hashlib", "_md5", "_sha", "_minimal_curses", "cStringIO",
- "thread", "itertools", "pyexpat", "_ssl", "array",
+ "thread", "itertools", "pyexpat", "_ssl", "cpyext", "array",
"binascii", "_multiprocessing", '_warnings',
"_collections", "_multibytecodec", "micronumpy", "_ffi",
- "_continuation", "_cffi_backend", "_csv"] # "cpyext", "cppyy"]
-# disabled until problems are fixed
+ "_continuation", "_cffi_backend", "_csv", "cppyy"]
))
translation_modules = default_modules.copy()
diff --git a/pypy/doc/__pypy__-module.rst b/pypy/doc/__pypy__-module.rst
--- a/pypy/doc/__pypy__-module.rst
+++ b/pypy/doc/__pypy__-module.rst
@@ -1,3 +1,7 @@
+
+.. comment: this document is very incomplete, should we generate
+ it automatically?
+
=======================
The ``__pypy__`` module
=======================
diff --git a/pypy/doc/getting-started-dev.rst b/pypy/doc/getting-started-dev.rst
--- a/pypy/doc/getting-started-dev.rst
+++ b/pypy/doc/getting-started-dev.rst
@@ -8,7 +8,8 @@
interpreter is written mostly in RPython (with pieces in Python), while
the RPython compiler is written in Python. The hard to understand part
is that Python is a meta-programming language for RPython, that is,
-RPython is considered from live objects **after** the imports are done.
+"being valid RPython" is a question that only makes sense on the
+live objects **after** the imports are done.
This might require more explanation. You start writing RPython from
``entry_point``, a good starting point is
``rpython/translator/goal/targetnopstandalone.py``. This does not do all that
@@ -37,7 +38,7 @@
In this example ``entry_point`` is RPython, ``add`` and ``sub`` are RPython,
however, ``generator`` is not.
-A good introductory level articles are available:
+The following introductory level articles are available:
* Laurence Tratt -- `Fast Enough VMs in Fast Enough Time`_.
diff --git a/pypy/doc/man/pypy.1.rst b/pypy/doc/man/pypy.1.rst
--- a/pypy/doc/man/pypy.1.rst
+++ b/pypy/doc/man/pypy.1.rst
@@ -16,7 +16,10 @@
Inspect interactively after running script.
-O
- Dummy optimization flag for compatibility with C Python.
+ Skip assert statements.
+
+-OO
+ Remove docstrings when importing modules in addition to -O.
-c *cmd*
Program passed in as CMD (terminates option list).
diff --git a/pypy/doc/rffi.rst b/pypy/doc/rffi.rst
--- a/pypy/doc/rffi.rst
+++ b/pypy/doc/rffi.rst
@@ -5,7 +5,7 @@
Purpose
-------
-This document describes an FFI for RPython language, concentrating
+This document describes an FFI for the RPython language, concentrating
on low-level backends like C. It describes
how to declare and call low-level (C) functions from RPython level.
@@ -50,7 +50,7 @@
------
In rffi_ there are various declared types for C-structures, like CCHARP
-(char*), SIZE_T (size_t) and others. refer to file for details.
+(char*), SIZE_T (size_t) and others. Refer to file for details.
Instances of non-primitive types must be alloced by hand, with call
to lltype.malloc, and freed by lltype.free both with keyword argument
flavor='raw'. There are several helpers like string -> char*
diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst
--- a/pypy/doc/whatsnew-head.rst
+++ b/pypy/doc/whatsnew-head.rst
@@ -40,3 +40,15 @@
.. branch: on-abort-resops
Added list of resops to the pypyjit on_abort hook.
+
+.. branch: logging-perf
+Speeds up the stdlib logging module
+
+.. branch: operrfmt-NT
+Adds a couple convenient format specifiers to operationerrfmt
+
+.. branch: win32-fixes3
+Skip and fix some non-translated (own) tests for win32 builds
+
+.. branch: ctypes-byref
+Add the '_obj' attribute on ctypes pointer() and byref() objects
diff --git a/pypy/doc/windows.rst b/pypy/doc/windows.rst
--- a/pypy/doc/windows.rst
+++ b/pypy/doc/windows.rst
@@ -2,7 +2,7 @@
PyPy on Windows
===============
-Pypy is supported on Windows platforms, starting with Windows 2000.
+PyPy is supported on Windows platforms, starting with Windows 2000.
The following text gives some hints about how to translate the PyPy
interpreter.
@@ -199,9 +199,9 @@
or such, depending on your mingw64 download.
-hacking on Pypy with the mingw compiler
+hacking on PyPy with the mingw compiler
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Since hacking on Pypy means running tests, you will need a way to specify
+Since hacking on PyPy means running tests, you will need a way to specify
the mingw compiler when hacking (as opposed to translating). As of
March 2012, --cc is not a valid option for pytest.py. However if you set an
environment variable CC to the compliter exe, testing will use it.
diff --git a/pypy/interpreter/app_main.py b/pypy/interpreter/app_main.py
--- a/pypy/interpreter/app_main.py
+++ b/pypy/interpreter/app_main.py
@@ -2,8 +2,8 @@
# App-level version of py.py.
# See test/test_app_main.
-# Missing vs CPython: -d, -OO, -t, -v, -x, -3
-"""\
+# Missing vs CPython: -d, -t, -v, -x, -3
+USAGE1 = __doc__ = """\
Options and arguments (and corresponding environment variables):
-B : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x
-c cmd : program passed in as string (terminates option list)
@@ -12,7 +12,8 @@
-i : inspect interactively after running script; forces a prompt even
if stdin does not appear to be a terminal; also PYTHONINSPECT=x
-m mod : run library module as a script (terminates option list)
--O : dummy optimization flag for compatibility with CPython
+-O : skip assert statements
+-OO : remove docstrings when importing modules in addition to -O
-R : ignored (see http://bugs.python.org/issue14621)
-Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew
-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE
@@ -27,7 +28,6 @@
PyPy options and arguments:
--info : print translation information about this PyPy executable
"""
-USAGE1 = __doc__
# Missing vs CPython: PYTHONHOME, PYTHONCASEOK
USAGE2 = """
Other environment variables:
@@ -470,6 +470,10 @@
sys.py3kwarning = bool(sys.flags.py3k_warning)
sys.dont_write_bytecode = bool(sys.flags.dont_write_bytecode)
+ if sys.flags.optimize >= 1:
+ import __pypy__
+ __pypy__.set_debug(False)
+
if sys.py3kwarning:
print >> sys.stderr, (
"Warning: pypy does not implement py3k warnings")
diff --git a/pypy/interpreter/argument.py b/pypy/interpreter/argument.py
--- a/pypy/interpreter/argument.py
+++ b/pypy/interpreter/argument.py
@@ -86,12 +86,9 @@
args_w = space.fixedview(w_stararg)
except OperationError, e:
if e.match(space, space.w_TypeError):
- w_type = space.type(w_stararg)
- typename = w_type.getname(space)
- raise OperationError(
+ raise operationerrfmt(
space.w_TypeError,
- space.wrap("argument after * must be "
- "a sequence, not %s" % (typename,)))
+ "argument after * must be a sequence, not %T", w_stararg)
raise
self.arguments_w = self.arguments_w + args_w
@@ -116,12 +113,10 @@
w_keys = space.call_method(w_starstararg, "keys")
except OperationError, e:
if e.match(space, space.w_AttributeError):
- w_type = space.type(w_starstararg)
- typename = w_type.getname(space)
- raise OperationError(
+ raise operationerrfmt(
space.w_TypeError,
- space.wrap("argument after ** must be "
- "a mapping, not %s" % (typename,)))
+ "argument after ** must be a mapping, not %T",
+ w_starstararg)
raise
keys_w = space.unpackiterable(w_keys)
keywords_w = [None] * len(keys_w)
diff --git a/pypy/interpreter/astcompiler/assemble.py b/pypy/interpreter/astcompiler/assemble.py
--- a/pypy/interpreter/astcompiler/assemble.py
+++ b/pypy/interpreter/astcompiler/assemble.py
@@ -245,6 +245,8 @@
if w_len is None:
w_len = space.len(self.w_consts)
space.setitem(self.w_consts, w_key, w_len)
+ if space.int_w(w_len) == 0:
+ self.scope.doc_removable = False
return space.int_w(w_len)
def _make_key(self, obj):
@@ -632,6 +634,7 @@
ops.JUMP_IF_FALSE_OR_POP : 0,
ops.POP_JUMP_IF_TRUE : -1,
ops.POP_JUMP_IF_FALSE : -1,
+ ops.JUMP_IF_NOT_DEBUG : 0,
ops.BUILD_LIST_FROM_ARG: 1,
}
diff --git a/pypy/interpreter/astcompiler/ast.py b/pypy/interpreter/astcompiler/ast.py
--- a/pypy/interpreter/astcompiler/ast.py
+++ b/pypy/interpreter/astcompiler/ast.py
@@ -2793,8 +2793,7 @@
def Module_get_body(space, w_self):
if not w_self.initialization_state & 1:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -2835,8 +2834,7 @@
def Interactive_get_body(space, w_self):
if not w_self.initialization_state & 1:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -2881,8 +2879,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 1:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
return space.wrap(w_self.body)
def Expression_set_body(space, w_self, w_new_value):
@@ -2925,8 +2922,7 @@
def Suite_get_body(space, w_self):
if not w_self.initialization_state & 1:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -2971,8 +2967,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 1:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'lineno')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'lineno')
return space.wrap(w_self.lineno)
def stmt_set_lineno(space, w_self, w_new_value):
@@ -2993,8 +2988,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 2:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'col_offset')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'col_offset')
return space.wrap(w_self.col_offset)
def stmt_set_col_offset(space, w_self, w_new_value):
@@ -3024,8 +3018,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'name')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'name')
return space.wrap(w_self.name)
def FunctionDef_set_name(space, w_self, w_new_value):
@@ -3046,8 +3039,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'args')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'args')
return space.wrap(w_self.args)
def FunctionDef_set_args(space, w_self, w_new_value):
@@ -3064,8 +3056,7 @@
def FunctionDef_get_body(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -3081,8 +3072,7 @@
def FunctionDef_get_decorator_list(space, w_self):
if not w_self.initialization_state & 32:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'decorator_list')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'decorator_list')
if w_self.w_decorator_list is None:
if w_self.decorator_list is None:
list_w = []
@@ -3131,8 +3121,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'name')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'name')
return space.wrap(w_self.name)
def ClassDef_set_name(space, w_self, w_new_value):
@@ -3149,8 +3138,7 @@
def ClassDef_get_bases(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'bases')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'bases')
if w_self.w_bases is None:
if w_self.bases is None:
list_w = []
@@ -3166,8 +3154,7 @@
def ClassDef_get_body(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -3183,8 +3170,7 @@
def ClassDef_get_decorator_list(space, w_self):
if not w_self.initialization_state & 32:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'decorator_list')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'decorator_list')
if w_self.w_decorator_list is None:
if w_self.decorator_list is None:
list_w = []
@@ -3234,8 +3220,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def Return_set_value(space, w_self, w_new_value):
@@ -3278,8 +3263,7 @@
def Delete_get_targets(space, w_self):
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'targets')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'targets')
if w_self.w_targets is None:
if w_self.targets is None:
list_w = []
@@ -3320,8 +3304,7 @@
def Assign_get_targets(space, w_self):
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'targets')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'targets')
if w_self.w_targets is None:
if w_self.targets is None:
list_w = []
@@ -3341,8 +3324,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def Assign_set_value(space, w_self, w_new_value):
@@ -3391,8 +3373,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'target')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'target')
return space.wrap(w_self.target)
def AugAssign_set_target(space, w_self, w_new_value):
@@ -3415,8 +3396,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'op')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'op')
return operator_to_class[w_self.op - 1]()
def AugAssign_set_op(space, w_self, w_new_value):
@@ -3439,8 +3419,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def AugAssign_set_value(space, w_self, w_new_value):
@@ -3489,8 +3468,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'dest')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'dest')
return space.wrap(w_self.dest)
def Print_set_dest(space, w_self, w_new_value):
@@ -3509,8 +3487,7 @@
def Print_get_values(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'values')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'values')
if w_self.w_values is None:
if w_self.values is None:
list_w = []
@@ -3530,8 +3507,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'nl')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'nl')
return space.wrap(w_self.nl)
def Print_set_nl(space, w_self, w_new_value):
@@ -3579,8 +3555,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'target')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'target')
return space.wrap(w_self.target)
def For_set_target(space, w_self, w_new_value):
@@ -3603,8 +3578,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'iter')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'iter')
return space.wrap(w_self.iter)
def For_set_iter(space, w_self, w_new_value):
@@ -3623,8 +3597,7 @@
def For_get_body(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -3640,8 +3613,7 @@
def For_get_orelse(space, w_self):
if not w_self.initialization_state & 32:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'orelse')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'orelse')
if w_self.w_orelse is None:
if w_self.orelse is None:
list_w = []
@@ -3690,8 +3662,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'test')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'test')
return space.wrap(w_self.test)
def While_set_test(space, w_self, w_new_value):
@@ -3710,8 +3681,7 @@
def While_get_body(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -3727,8 +3697,7 @@
def While_get_orelse(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'orelse')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'orelse')
if w_self.w_orelse is None:
if w_self.orelse is None:
list_w = []
@@ -3776,8 +3745,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'test')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'test')
return space.wrap(w_self.test)
def If_set_test(space, w_self, w_new_value):
@@ -3796,8 +3764,7 @@
def If_get_body(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -3813,8 +3780,7 @@
def If_get_orelse(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'orelse')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'orelse')
if w_self.w_orelse is None:
if w_self.orelse is None:
list_w = []
@@ -3862,8 +3828,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'context_expr')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'context_expr')
return space.wrap(w_self.context_expr)
def With_set_context_expr(space, w_self, w_new_value):
@@ -3886,8 +3851,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'optional_vars')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'optional_vars')
return space.wrap(w_self.optional_vars)
def With_set_optional_vars(space, w_self, w_new_value):
@@ -3906,8 +3870,7 @@
def With_get_body(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -3954,8 +3917,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'type')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'type')
return space.wrap(w_self.type)
def Raise_set_type(space, w_self, w_new_value):
@@ -3978,8 +3940,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'inst')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'inst')
return space.wrap(w_self.inst)
def Raise_set_inst(space, w_self, w_new_value):
@@ -4002,8 +3963,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'tback')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'tback')
return space.wrap(w_self.tback)
def Raise_set_tback(space, w_self, w_new_value):
@@ -4048,8 +4008,7 @@
def TryExcept_get_body(space, w_self):
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -4065,8 +4024,7 @@
def TryExcept_get_handlers(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'handlers')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'handlers')
if w_self.w_handlers is None:
if w_self.handlers is None:
list_w = []
@@ -4082,8 +4040,7 @@
def TryExcept_get_orelse(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'orelse')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'orelse')
if w_self.w_orelse is None:
if w_self.orelse is None:
list_w = []
@@ -4128,8 +4085,7 @@
def TryFinally_get_body(space, w_self):
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
if w_self.w_body is None:
if w_self.body is None:
list_w = []
@@ -4145,8 +4101,7 @@
def TryFinally_get_finalbody(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'finalbody')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'finalbody')
if w_self.w_finalbody is None:
if w_self.finalbody is None:
list_w = []
@@ -4193,8 +4148,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'test')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'test')
return space.wrap(w_self.test)
def Assert_set_test(space, w_self, w_new_value):
@@ -4217,8 +4171,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'msg')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'msg')
return space.wrap(w_self.msg)
def Assert_set_msg(space, w_self, w_new_value):
@@ -4262,8 +4215,7 @@
def Import_get_names(space, w_self):
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'names')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'names')
if w_self.w_names is None:
if w_self.names is None:
list_w = []
@@ -4308,8 +4260,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'module')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'module')
return space.wrap(w_self.module)
def ImportFrom_set_module(space, w_self, w_new_value):
@@ -4329,8 +4280,7 @@
def ImportFrom_get_names(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'names')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'names')
if w_self.w_names is None:
if w_self.names is None:
list_w = []
@@ -4350,8 +4300,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'level')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'level')
return space.wrap(w_self.level)
def ImportFrom_set_level(space, w_self, w_new_value):
@@ -4399,8 +4348,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
return space.wrap(w_self.body)
def Exec_set_body(space, w_self, w_new_value):
@@ -4423,8 +4371,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'globals')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'globals')
return space.wrap(w_self.globals)
def Exec_set_globals(space, w_self, w_new_value):
@@ -4447,8 +4394,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'locals')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'locals')
return space.wrap(w_self.locals)
def Exec_set_locals(space, w_self, w_new_value):
@@ -4493,8 +4439,7 @@
def Global_get_names(space, w_self):
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'names')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'names')
if w_self.w_names is None:
if w_self.names is None:
list_w = []
@@ -4539,8 +4484,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def Expr_set_value(space, w_self, w_new_value):
@@ -4638,8 +4582,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 1:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'lineno')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'lineno')
return space.wrap(w_self.lineno)
def expr_set_lineno(space, w_self, w_new_value):
@@ -4660,8 +4603,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 2:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'col_offset')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'col_offset')
return space.wrap(w_self.col_offset)
def expr_set_col_offset(space, w_self, w_new_value):
@@ -4691,8 +4633,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'op')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'op')
return boolop_to_class[w_self.op - 1]()
def BoolOp_set_op(space, w_self, w_new_value):
@@ -4711,8 +4652,7 @@
def BoolOp_get_values(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'values')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'values')
if w_self.w_values is None:
if w_self.values is None:
list_w = []
@@ -4758,8 +4698,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'left')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'left')
return space.wrap(w_self.left)
def BinOp_set_left(space, w_self, w_new_value):
@@ -4782,8 +4721,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'op')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'op')
return operator_to_class[w_self.op - 1]()
def BinOp_set_op(space, w_self, w_new_value):
@@ -4806,8 +4744,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'right')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'right')
return space.wrap(w_self.right)
def BinOp_set_right(space, w_self, w_new_value):
@@ -4856,8 +4793,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'op')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'op')
return unaryop_to_class[w_self.op - 1]()
def UnaryOp_set_op(space, w_self, w_new_value):
@@ -4880,8 +4816,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'operand')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'operand')
return space.wrap(w_self.operand)
def UnaryOp_set_operand(space, w_self, w_new_value):
@@ -4929,8 +4864,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'args')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'args')
return space.wrap(w_self.args)
def Lambda_set_args(space, w_self, w_new_value):
@@ -4951,8 +4885,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
return space.wrap(w_self.body)
def Lambda_set_body(space, w_self, w_new_value):
@@ -5000,8 +4933,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'test')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'test')
return space.wrap(w_self.test)
def IfExp_set_test(space, w_self, w_new_value):
@@ -5024,8 +4956,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'body')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'body')
return space.wrap(w_self.body)
def IfExp_set_body(space, w_self, w_new_value):
@@ -5048,8 +4979,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'orelse')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'orelse')
return space.wrap(w_self.orelse)
def IfExp_set_orelse(space, w_self, w_new_value):
@@ -5094,8 +5024,7 @@
def Dict_get_keys(space, w_self):
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'keys')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'keys')
if w_self.w_keys is None:
if w_self.keys is None:
list_w = []
@@ -5111,8 +5040,7 @@
def Dict_get_values(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'values')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'values')
if w_self.w_values is None:
if w_self.values is None:
list_w = []
@@ -5155,8 +5083,7 @@
def Set_get_elts(space, w_self):
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'elts')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'elts')
if w_self.w_elts is None:
if w_self.elts is None:
list_w = []
@@ -5201,8 +5128,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'elt')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'elt')
return space.wrap(w_self.elt)
def ListComp_set_elt(space, w_self, w_new_value):
@@ -5221,8 +5147,7 @@
def ListComp_get_generators(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'generators')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'generators')
if w_self.w_generators is None:
if w_self.generators is None:
list_w = []
@@ -5268,8 +5193,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'elt')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'elt')
return space.wrap(w_self.elt)
def SetComp_set_elt(space, w_self, w_new_value):
@@ -5288,8 +5212,7 @@
def SetComp_get_generators(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'generators')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'generators')
if w_self.w_generators is None:
if w_self.generators is None:
list_w = []
@@ -5335,8 +5258,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'key')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'key')
return space.wrap(w_self.key)
def DictComp_set_key(space, w_self, w_new_value):
@@ -5359,8 +5281,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def DictComp_set_value(space, w_self, w_new_value):
@@ -5379,8 +5300,7 @@
def DictComp_get_generators(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'generators')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'generators')
if w_self.w_generators is None:
if w_self.generators is None:
list_w = []
@@ -5427,8 +5347,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'elt')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'elt')
return space.wrap(w_self.elt)
def GeneratorExp_set_elt(space, w_self, w_new_value):
@@ -5447,8 +5366,7 @@
def GeneratorExp_get_generators(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'generators')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'generators')
if w_self.w_generators is None:
if w_self.generators is None:
list_w = []
@@ -5494,8 +5412,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def Yield_set_value(space, w_self, w_new_value):
@@ -5542,8 +5459,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'left')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'left')
return space.wrap(w_self.left)
def Compare_set_left(space, w_self, w_new_value):
@@ -5562,8 +5478,7 @@
def Compare_get_ops(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'ops')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'ops')
if w_self.w_ops is None:
if w_self.ops is None:
list_w = []
@@ -5579,8 +5494,7 @@
def Compare_get_comparators(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'comparators')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'comparators')
if w_self.w_comparators is None:
if w_self.comparators is None:
list_w = []
@@ -5628,8 +5542,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'func')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'func')
return space.wrap(w_self.func)
def Call_set_func(space, w_self, w_new_value):
@@ -5648,8 +5561,7 @@
def Call_get_args(space, w_self):
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'args')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'args')
if w_self.w_args is None:
if w_self.args is None:
list_w = []
@@ -5665,8 +5577,7 @@
def Call_get_keywords(space, w_self):
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'keywords')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'keywords')
if w_self.w_keywords is None:
if w_self.keywords is None:
list_w = []
@@ -5686,8 +5597,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 32:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'starargs')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'starargs')
return space.wrap(w_self.starargs)
def Call_set_starargs(space, w_self, w_new_value):
@@ -5710,8 +5620,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 64:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'kwargs')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'kwargs')
return space.wrap(w_self.kwargs)
def Call_set_kwargs(space, w_self, w_new_value):
@@ -5764,8 +5673,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def Repr_set_value(space, w_self, w_new_value):
@@ -5812,8 +5720,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'n')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'n')
return w_self.n
def Num_set_n(space, w_self, w_new_value):
@@ -5858,8 +5765,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 's')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 's')
return w_self.s
def Str_set_s(space, w_self, w_new_value):
@@ -5904,8 +5810,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def Attribute_set_value(space, w_self, w_new_value):
@@ -5928,8 +5833,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'attr')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'attr')
return space.wrap(w_self.attr)
def Attribute_set_attr(space, w_self, w_new_value):
@@ -5950,8 +5854,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'ctx')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'ctx')
return expr_context_to_class[w_self.ctx - 1]()
def Attribute_set_ctx(space, w_self, w_new_value):
@@ -6000,8 +5903,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'value')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'value')
return space.wrap(w_self.value)
def Subscript_set_value(space, w_self, w_new_value):
@@ -6024,8 +5926,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 8:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'slice')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'slice')
return space.wrap(w_self.slice)
def Subscript_set_slice(space, w_self, w_new_value):
@@ -6048,8 +5949,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 16:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'ctx')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'ctx')
return expr_context_to_class[w_self.ctx - 1]()
def Subscript_set_ctx(space, w_self, w_new_value):
@@ -6098,8 +5998,7 @@
if w_obj is not None:
return w_obj
if not w_self.initialization_state & 4:
- typename = space.type(w_self).getname(space)
- raise operationerrfmt(space.w_AttributeError, "'%s' object has no attribute '%s'", typename, 'id')
+ raise operationerrfmt(space.w_AttributeError, "'%T' object has no attribute '%s'", w_self, 'id')
return space.wrap(w_self.id)
def Name_set_id(space, w_self, w_new_value):
@@ -6120,8 +6019,7 @@
if w_obj is not None:
More information about the pypy-commit
mailing list