1 |
commit: be43719867e694a08699aa07c2f5f519df26b59b |
2 |
Author: Matt Turner <mattst88 <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Apr 18 04:33:52 2020 +0000 |
4 |
Commit: Matt Turner <mattst88 <AT> gentoo <DOT> org> |
5 |
CommitDate: Thu Apr 23 18:20:35 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=be437198 |
7 |
|
8 |
catalyst: Add read/write_lock contextmanagers |
9 |
|
10 |
Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org> |
11 |
|
12 |
catalyst/lock.py | 20 ++++++++++++++++++++ |
13 |
1 file changed, 20 insertions(+) |
14 |
|
15 |
diff --git a/catalyst/lock.py b/catalyst/lock.py |
16 |
index ab005163..e31745b2 100644 |
17 |
--- a/catalyst/lock.py |
18 |
+++ b/catalyst/lock.py |
19 |
@@ -1,6 +1,8 @@ |
20 |
|
21 |
import os |
22 |
|
23 |
+from contextlib import contextmanager |
24 |
+ |
25 |
from snakeoil import fileutils |
26 |
from snakeoil import osutils |
27 |
from catalyst.fileops import ensure_dirs |
28 |
@@ -36,3 +38,21 @@ class LockDir(Lock): |
29 |
lockfile = os.path.join(lockdir, '.catalyst_lock') |
30 |
|
31 |
Lock.__init__(self, lockfile) |
32 |
+ |
33 |
+@contextmanager |
34 |
+def read_lock(filename): |
35 |
+ lock = Lock(filename) |
36 |
+ lock.read_lock() |
37 |
+ try: |
38 |
+ yield |
39 |
+ finally: |
40 |
+ lock.unlock() |
41 |
+ |
42 |
+@contextmanager |
43 |
+def write_lock(filename): |
44 |
+ lock = Lock(filename) |
45 |
+ lock.write_lock() |
46 |
+ try: |
47 |
+ yield |
48 |
+ finally: |
49 |
+ lock.unlock() |