On Monday 14 November 2016 16:55, eryk sun wrote: > On Mon, Nov 14, 2016 at 5:20 AM, Steven D'Aprano > <steve+comp.lang.pyt...@pearwood.info> wrote: >> but what magic do I need? globals() is no good, because it returns the >> library's global namespace, not the caller's. >> >> Any solution ought to work for CPython, IronPython and Jython, at a minimum. > > You can access the globals of the caller's frame, but you'll have to > research to what extent IronPython and Jython support CPython frame > objects. > > FWIW: > > import inspect > > SPAMIFY = True > > def make_spam(n): > caller_globals = inspect.currentframe().f_back.f_globals > if caller_globals.get('SPAMIFY', SPAMIFY): > return "spam" * n > else: > return "ham" * n
Nice! That appears to work on Jython, but not IronPython. Thanks for the suggestion. -- Steven 299792.458 km/s — not just a good idea, it’s the law! -- https://mail.python.org/mailman/listinfo/python-list