Changeset 781 for trunk/packages/sipb-xen-base/files/usr/share/python-support/sipb-xen-base/invirt/common.py
- Timestamp:
- Jul 29, 2008, 10:35:08 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/sipb-xen-base/files/usr/share/python-support/sipb-xen-base/invirt/common.py
r778 r781 1 1 import unittest 2 from fcntl import flock, LOCK_EX, LOCK_UN 3 from os import remove 2 4 3 5 class struct(object): 4 6 'A simple namespace object.' 5 def __init__(self, d = {} ):7 def __init__(self, d = {}, **kwargs): 6 8 'd is the dictionary to update my __dict__ with.' 7 9 self.__dict__.update(d) 10 self.__dict__.update(kwargs) 8 11 9 12 def dicts2struct(x): … … 19 22 return x 20 23 21 def wrap(rsrc, func): 22 "Utility to that emulates with Python 2.5's `with closing(rsrc)`." 23 try: return func(rsrc) 24 finally: rsrc.close() 24 # 25 # Hacks to work around lack of Python 2.5's `with` statement. 26 # 27 28 def with_closing(rsrc): 29 "Utility to emulate Python 2.5's `with closing(rsrc)` context manager." 30 def wrapper(func): 31 try: return func(rsrc) 32 finally: rsrc.close() 33 return wrapper 34 35 def with_lock_file(path): 36 """ 37 Context manager for lock files. Example: 38 39 @with_lock_file('/tmp/mylock') 40 def input(): 41 print 'locked' 42 return raw_input() 43 # decorator is executed immediately 44 print input # prints the input text 45 """ 46 def wrapper(func): 47 @with_closing(file(path, 'w')) 48 def g(f): 49 flock(f, LOCK_EX) 50 try: return func() 51 finally: flock(f, LOCK_UN) 52 remove(path) 53 return g 54 return wrapper 55 56 # 57 # Tests. 58 # 25 59 26 60 class common_tests(unittest.TestCase):
Note: See TracChangeset
for help on using the changeset viewer.