__enter__ and __exit__ must be on the class
diff --git a/Lib/multiprocessing/synchronize.py b/Lib/multiprocessing/synchronize.py
index 716f3c7..6f90cb5 100644
--- a/Lib/multiprocessing/synchronize.py
+++ b/Lib/multiprocessing/synchronize.py
@@ -58,8 +58,12 @@
def _make_methods(self):
self.acquire = self._semlock.acquire
self.release = self._semlock.release
- self.__enter__ = self._semlock.__enter__
- self.__exit__ = self._semlock.__exit__
+
+ def __enter__(self):
+ return self._semlock.__enter__()
+
+ def __exit__(self, *args):
+ return self._semlock.__exit__(*args)
def __getstate__(self):
assert_spawning(self)
@@ -181,11 +185,15 @@
self._woken_count, self._wait_semaphore) = state
self._make_methods()
+ def __enter__(self):
+ return self._lock.__enter__()
+
+ def __exit__(self, *args):
+ return self._lock.__exit__(*args)
+
def _make_methods(self):
self.acquire = self._lock.acquire
self.release = self._lock.release
- self.__enter__ = self._lock.__enter__
- self.__exit__ = self._lock.__exit__
def __repr__(self):
try: