homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: IDLE Shell: delattr(__builtins__,"getattr") causes shell to stop working
Type: behavior Stage: resolved
Components: Versions: Python 3.2
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: Ramchandra Apte, amaury.forgeotdarc, loewis, r.david.murray, terry.reedy
Priority: normal Keywords:

Created on 2012年06月20日 06:03 by Ramchandra Apte, last changed 2022年04月11日 14:57 by admin. This issue is now closed.

Messages (9)
msg163254 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2012年06月20日 06:03
delattr(__builtins__,"getattr") causes shell to stop working
if you type some code in nothing gets printed back
if you press enter without typing any code you get a traceback
Exception in thread SockThread:
Traceback (most recent call last):
 File "/usr/lib/python3.2/socketserver.py", line 284, in _handle_request_noblock
 self.process_request(request, client_address)
 File "/usr/lib/python3.2/socketserver.py", line 310, in process_request
 self.finish_request(request, client_address)
 File "/usr/lib/python3.2/socketserver.py", line 323, in finish_request
 self.RequestHandlerClass(request, client_address, self)
 File "/usr/lib/python3.2/idlelib/rpc.py", line 503, in __init__
 socketserver.BaseRequestHandler.__init__(self, sock, addr, svr)
 File "/usr/lib/python3.2/socketserver.py", line 637, in __init__
 self.handle()
 File "/usr/lib/python3.2/idlelib/run.py", line 264, in handle
 rpc.RPCHandler.getresponse(self, myseq=None, wait=0.05)
 File "/usr/lib/python3.2/idlelib/rpc.py", line 280, in getresponse
 response = self._getresponse(myseq, wait)
 File "/usr/lib/python3.2/idlelib/rpc.py", line 300, in _getresponse
 response = self.pollresponse(myseq, wait)
 File "/usr/lib/python3.2/idlelib/rpc.py", line 438, in pollresponse
 response = self.localcall(seq, resq)
 File "/usr/lib/python3.2/idlelib/rpc.py", line 185, in localcall
 method = getattr(obj, methodname)
NameError: global name 'getattr' is not defined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
 File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner
 self.run()
 File "/usr/lib/python3.2/threading.py", line 693, in run
 self._target(*self._args, **self._kwargs)
 File "/usr/lib/python3.2/idlelib/run.py", line 135, in manage_socket
 server.handle_request() # A single request only
 File "/usr/lib/python3.2/socketserver.py", line 269, in handle_request
 self._handle_request_noblock()
 File "/usr/lib/python3.2/socketserver.py", line 286, in _handle_request_noblock
 self.handle_error(request, client_address)
 File "/usr/lib/python3.2/idlelib/run.py", line 240, in handle_error
 print('Request: ', repr(request), file=erf)
 File "/usr/lib/python3.2/socket.py", line 111, in __repr__
 getattr(self, '_closed', False) and " [closed] " or "",
NameError: global name 'getattr' is not defined
msg163255 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2012年06月20日 06:05
Running the delattr(__builtins__,"getattr") in Python from the cmd line doesn't create any problems though.
msg163256 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2012年06月20日 06:08
Another note: this bug is reproducable in the IDLE Shell with the python subprocess feature enabled (the python process that runs your commands and the python process that manages IDLE's windows are different).
msg163257 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012年06月20日 06:18
Why do you think this is a bug? It is expected behavior.
msg163267 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2012年06月20日 12:03
IDLE should try to mimic Python as much as feasible.
msg163268 - (view) Author: Ramchandra Apte (Ramchandra Apte) * Date: 2012年06月20日 12:04
s/Python/Python in cmd
msg163271 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2012年06月20日 12:34
Well, I don't think that imitating the command line needs to extend to supporting doing unusual things to builtins, so unless someone like Terry disagrees I think we should close this as won't fix.
msg163272 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2012年06月20日 12:35
I'm afraid it's not feasible. Python (or IDLE) is allowed to rely on Python working correctly, and if commonly used functions are modified there will be unexpected errors.
Likewise in 3.3, after a "del __builtins__.hasattr", even import statements will fail...
msg163290 - (view) Author: Terry J. Reedy (terry.reedy) * (Python committer) Date: 2012年06月20日 18:36
To put it another way, IDLE is written for standard Python. A standard Python interpreter has a getattr builtin that works as documented in the library manual. Deleting that or any other builtin makes the interpreter non-standard. So would replacing or wrapping the builtin with a function that does anything other than innocuously augmenting the behavior with something like counting calls or logging them to a file.
Deletion of getattr *does* create problems for CPython (or any interpreter) in that legal Python code using getattr no longer runs. I presume CPython can limp along and execute other code because it directly calls the C function wrapped by the __builtins__.getattr object.
History
Date User Action Args
2022年04月11日 14:57:31adminsetgithub: 59318
2012年07月18日 11:13:00r.david.murraylinkissue15383 superseder
2012年06月20日 18:36:34terry.reedysetresolution: wont fix -> not a bug
messages: + msg163290
2012年06月20日 14:03:06r.david.murraysetstatus: open -> closed
2012年06月20日 12:35:40amaury.forgeotdarcsetstatus: pending -> open
nosy: + amaury.forgeotdarc
messages: + msg163272

2012年06月20日 12:34:19r.david.murraysetstatus: open -> pending

type: behavior

nosy: + r.david.murray, terry.reedy
messages: + msg163271
resolution: wont fix
stage: resolved
2012年06月20日 12:04:02Ramchandra Aptesetmessages: + msg163268
2012年06月20日 12:03:37Ramchandra Aptesetmessages: + msg163267
2012年06月20日 06:18:05loewissetnosy: + loewis
messages: + msg163257
2012年06月20日 06:08:31Ramchandra Aptesetmessages: + msg163256
2012年06月20日 06:05:21Ramchandra Aptesetmessages: + msg163255
2012年06月20日 06:03:51Ramchandra Aptecreate

AltStyle によって変換されたページ (->オリジナル) /