[IronPython] Callstack inspection

Dino Viehland dinov at exchange.microsoft.com
Wed Aug 16 00:58:27 CEST 2006

It's most likely that inspect won't work.  But we certainly don't implement sys._getframe which will be necessary to crawl the stack.  In the future we're going to look at both what we can do from our side and what could be done from the CLR side to make it easier to implement this feature - in other words this may be one of those features it takes us a while to get to.

-----Original Message-----
From: users-bounces at lists.ironpython.com [mailto:users-bounces at lists.ironpython.com] On Behalf Of Gary Stephenson
Sent: Tuesday, August 15, 2006 3:51 PM
To: Discussion of IronPython
Subject: [IronPython] Callstack inspection

I would like to adapt the following code to IronPython, but there appears to be no inspect module available.

Any clues on how I might proceed?

many tias,


# code begins
# a hack to support something like dynamically scoped variables

import inspect

class _gsDynamicVars( object ):

    def __init__( self ):
        self._publics = {}

    def setPublic( self, nm, x = None ):
        self._publics[nm] = x

    def __getattribute__( self, nm ):
        for f in inspect.stack():
            if f[0].f_locals.has_key( '_privates' ):
                if f[0].f_locals[ '_privates' ].has_key( nm ):
                    return f[0].f_locals['_privates'][nm]
        return self._publics.get(nm)

    def __setattr__( self, nm, x = None ):
        for f in inspect.stack():
            if f[0].f_locals.has_key( '_privates' ) :
                if f[0].f_locals[ '_privates' ].has_key( nm ) :
                    f[0].f_locals['_privates'][nm] = x
                    return x
        if self._publics.has_key( nm ) :
            self._publics[nm] = x
        raise NameError

users mailing list
users at lists.ironpython.com

More information about the Ironpython-users mailing list