FWIW, this should work:

    def replaceFrame(self, ref, oldValue, newValue):
        for name, value in ref.f_locals.items():
            if value is oldValue:
                exec "ref.f_locals[name] = newValue"
                assert ref.f_locals[name] is newValue

And, no, you don't have to tell me that this is an evil hack. I already know that, since I discovered it earlier this evening by poking around in the C source code for PyFrame_LocalsToFast and then looking to see what code calls that function :)

Yes. After poking around in Google with PyFrame_LocalsToFast, I found some other links to people doing that. I implemented a direct call using ctypes to make the code explicit about what's happening. I'm just glad it is possible now. Works fine in both 2.3 and 2.4.


Thanks,
-Shane
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to