* Protect the stoplist from mutation (suggested by JvR).
* Replace the comment on non-CPython implementations with working code. Should help those who could not comprehend the efforts that were made to support non-CPython environments automatically, with no performance penalty.
This commit is contained in:
parent
a8b8df4485
commit
5b706be0c0
23
pep-0329.txt
23
pep-0329.txt
|
@ -154,8 +154,9 @@ Here is a sample implementation for codetweaks.py::
|
|||
"""
|
||||
import __builtin__
|
||||
env = vars(__builtin__).copy()
|
||||
stoplist = dict.fromkeys(stoplist)
|
||||
if builtin_only:
|
||||
stoplist.extend(f.func_globals)
|
||||
stoplist.update(f.func_globals)
|
||||
else:
|
||||
env.update(f.func_globals)
|
||||
|
||||
|
@ -214,19 +215,25 @@ Here is a sample implementation for codetweaks.py::
|
|||
elif type(v) in (type, ClassType):
|
||||
bind_all(v, builtin_only, stoplist, verbose)
|
||||
|
||||
|
||||
def f(): pass
|
||||
try:
|
||||
f.func_code.code
|
||||
except AttributeError: # detect non-CPython environments
|
||||
bind_all = lambda *args, **kwds: 0
|
||||
del f
|
||||
|
||||
import sys
|
||||
bind_all(sys.modules[__name__]) # Optimizer, optimize thyself!
|
||||
|
||||
|
||||
|
||||
The final code should have some minor embellishments:
|
||||
Note the automatic detection of a non-CPython environment that does not
|
||||
have bytecodes [3]_. In that situation, the bind functions would simply
|
||||
return the original function unchanged. This assures that the two
|
||||
line additions to library modules do not impact other implementations.
|
||||
|
||||
* Automatic detection of a non-CPython environment that does not have
|
||||
bytecodes [3]_. In that situation, the bind functions would simply
|
||||
return the original function unchanged. This assures that the two
|
||||
line additions to library modules do not impact other implementations.
|
||||
The final code should add a flag to make it easy to disable binding.
|
||||
|
||||
* Add a flag to make it easy to disable binding.
|
||||
|
||||
|
||||
References
|
||||
|
|
Loading…
Reference in New Issue