X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-base.git/blobdiff_plain/ff3dc91d38ee542dbb79c94ac910b43c2985b58e..a11a45e1b18add76f2a440412ef6379a9874b082:/files/usr/share/python-support/sipb-xen-base/invirt/common.py diff --git a/files/usr/share/python-support/sipb-xen-base/invirt/common.py b/files/usr/share/python-support/sipb-xen-base/invirt/common.py index ca90714..5f669ba 100644 --- a/files/usr/share/python-support/sipb-xen-base/invirt/common.py +++ b/files/usr/share/python-support/sipb-xen-base/invirt/common.py @@ -1,6 +1,5 @@ import unittest from fcntl import flock, LOCK_EX, LOCK_UN -from os import remove class struct(object): 'A simple namespace object.' @@ -26,7 +25,15 @@ def dicts2struct(x): # def with_closing(rsrc): - "Utility to emulate Python 2.5's `with closing(rsrc)` context manager." + """ + Utility to emulate Python 2.5's `with closing(rsrc)` context manager. + + E.g., + @with_closing(file('/tmp/foo')) + def contents(f): + return f.read() + # now 'contents' is the contents of /tmp/foo + """ def wrapper(func): try: return func(rsrc) finally: rsrc.close() @@ -40,8 +47,8 @@ def with_lock_file(path): def input(): print 'locked' return raw_input() - # decorator is executed immediately - print input # prints the input text + # prints 'locked' + print input # prints what raw_input() returned """ def wrapper(func): @with_closing(file(path, 'w')) @@ -49,7 +56,6 @@ def with_lock_file(path): flock(f, LOCK_EX) try: return func() finally: flock(f, LOCK_UN) - remove(path) return g return wrapper