> -----Original Message-----
> From: Kent Johnson [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, December 13, 2006 3:42 PM
> To: Carroll, Barry
> Cc: tutor@python.org
> Subject: Re: [Tutor] Accessing the name of a Function
> 
<<skip>>
> 
> You could also do this very simply and cleanly with a decorator,
> assuming Python >= 2.4. This example is pretty much what you want:
> http://wiki.python.org/moin/PythonDecoratorLibrary#head-
> d4ce77c6d6e75aad25baf982f6fec0ff4b3653f4
> 
> In your approach, you can call _getframe() in handlestub, see for
example
> http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66062
> 
> Kent
> 
> >
<<skip>>


Right again, Kent. Due to the constraints of the target test system,
this application has to stay at Python 2.3, at least for now.  But using
_getframe(1) to get the caller's stack frame does simplify the stub
handler call considerably, from 

                    handlestub(ctrl, proc, sys._getframe())
to
                    handlestub()

The handler now looks like this:

##########
def handlestub():
    """Identifies actions that are defined but not yet implemented."""
    
    # Get the calling function's stack frame.  
    thestubframe = sys._getframe(1)
    themsg = "Execuiting %s (implementation pending) with arguments: " %
\
             thestubframe.f_code.co_name
    (theargnames, trash1, trash2, thelocalsdict) = \
         getargvalues(thestubframe)
    # The first two arguments are internal to the application: do not 
    #display.
    if len(theargnames) <= 2:
        themsg += "None"
    else:
        for theargname in theargnames[2:]:
            themsg += "%s=%s  " % (theargname,
thelocalsdict[theargname])
    ctrl = thelocalsdict["ctrl"]
    ctrl.log.logaction(ctrl.log.INFO, themsg)
##########

Thanks again.  

Regards,
 
Barry
[EMAIL PROTECTED]
541-302-1107
________________________
We who cut mere stones must always be envisioning cathedrals.

-Quarry worker's creed



_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to