This never got sent, sorry, may help... From: "Martin v. Löwis" <martin at v.loewis.de> > Oliver Schoenborn wrote: > >>It doesn't work in Python. I believe your implementation also fails in > >>Jython (but didn't test). > > > > > > Unless we're talking cross-purpose here, scope.py shows it works at least in > > Python downloaded from python.org. Again, could you please be more specific, > > pointing to which part of the code is allegedly flawed or not portable? > > Try running it with Jython 2.1, available from www.jython.org. I get the > error > > ImportError: no module named inspect I checked on the jython site, the cvs repository, and the inspect module is only partially implemented as a wrapper around the Python inspect module. This problem you are having seems related to implementation, not technique. The technique itself can be summarized as follows: - Create a function that wraps a try/finally around the function of interest - Make class whose instances need "cleanup" automatically tell the function in which they were created (the "function of interest" above) that they should be cleaned up upon function exit. This requires three things: - A new class in which that functionality can be encapsulated so the user doesn't have to replicate it every time; just need to derive from it - Someone (the new class, or the wrapper) to create new function attribute - When an object is instantiated, add ref to self to the new, special function attribute, like Python allows. This itself requires: - Find function in which self was instantiated so that the function attribute can be accessed The inspect module is used in the very last task. The new function attribute is only used as a convenient place to store information which is closely tied to the function. But there are other possibilities. E.g. instead of creating a function attribute, the ScopeGuardian could use a global stack of list of objects. An instance of NeedsFinalization would use the top list of the stack to add a reference to istelf there. It looks like Jython has some parts of python lib implemented natively, some borrowed, and some not implemented, based on need and manpower, so the fact that the inspect module is not available hardly qualifies the technique as "not working". If Jython doesn't use stack, and implementing in terms of global var not feasible, *and* there is no other implementation possible in Jython, then yeah, I agree, scope.py is not portable to Jython. However that doesn't mean that the technique can't be implemented different in Python interpreter and Jython interpreter. Cheers, Oliver
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4