# HG changeset patch -- Bitbucket.org # Project py-trunk # URL http://bitbucket.org/hpk42/py-trunk/overview # User Benjamin Peterson <benja...@python.org> # Date 1272073180 18000 # Node ID 7fa0f8cbb3c754d43937d176e3a2f1b64e4b0d92 # Parent ee52e1cb604f03bba06bcdd137f458b01dba3532 add a helper to get a function's code
--- a/py/_builtin.py +++ b/py/_builtin.py @@ -111,6 +111,9 @@ if sys.version_info >= (3, 0): def _getfuncdict(function): return getattr(function, "__dict__", None) + def _getcode(function): + return getattr(function, "__code__", None) + def execfile(fn, globs=None, locs=None): if globs is None: back = sys._getframe(1) @@ -147,6 +150,9 @@ else: def _getfuncdict(function): return getattr(function, "__dict__", None) + def _getcode(function): + return getattr(function, "func_code", None) + def print_(*args, **kwargs): """ minimal backport of py3k print statement. """ sep = ' ' --- a/testing/root/test_builtin.py +++ b/testing/root/test_builtin.py @@ -1,4 +1,5 @@ import sys +import types import py from py.builtin import set, frozenset, reversed, sorted @@ -146,3 +147,8 @@ def test_tryimport(): assert x == py x = py.builtin._tryimport('asldkajsdl', 'py.path') assert x == py.path + +def test_getcode(): + code = py.builtin._getcode(test_getcode) + assert isinstance(code, types.CodeType) + assert py.builtin._getcode(4) is None --- a/py/__init__.py +++ b/py/__init__.py @@ -125,6 +125,7 @@ py.apipkg.initpkg(__name__, dict( '_istext' : '._builtin:_istext', '_getimself' : '._builtin:_getimself', '_getfuncdict' : '._builtin:_getfuncdict', + '_getcode' : '._builtin:_getcode', 'builtins' : '._builtin:builtins', 'execfile' : '._builtin:execfile', 'callable' : '._builtin:callable', _______________________________________________ py-svn mailing list py-svn@codespeak.net http://codespeak.net/mailman/listinfo/py-svn