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.
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:31 | admin | set | github: 59318 |
| 2012年07月18日 11:13:00 | r.david.murray | link | issue15383 superseder |
| 2012年06月20日 18:36:34 | terry.reedy | set | resolution: wont fix -> not a bug messages: + msg163290 |
| 2012年06月20日 14:03:06 | r.david.murray | set | status: open -> closed |
| 2012年06月20日 12:35:40 | amaury.forgeotdarc | set | status: pending -> open nosy: + amaury.forgeotdarc messages: + msg163272 |
| 2012年06月20日 12:34:19 | r.david.murray | set | status: open -> pending type: behavior nosy: + r.david.murray, terry.reedy messages: + msg163271 resolution: wont fix stage: resolved |
| 2012年06月20日 12:04:02 | Ramchandra Apte | set | messages: + msg163268 |
| 2012年06月20日 12:03:37 | Ramchandra Apte | set | messages: + msg163267 |
| 2012年06月20日 06:18:05 | loewis | set | nosy:
+ loewis messages: + msg163257 |
| 2012年06月20日 06:08:31 | Ramchandra Apte | set | messages: + msg163256 |
| 2012年06月20日 06:05:21 | Ramchandra Apte | set | messages: + msg163255 |
| 2012年06月20日 06:03:51 | Ramchandra Apte | create | |