MCPcopy Create free account
hub / github.com/tox-dev/filelock / _CoroutineDescriptorLock

Class _CoroutineDescriptorLock

tests/test_fork_backends.py:46–66  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44
45
46class _CoroutineDescriptorLock(BaseAsyncFileLock):
47 acquire_error: BaseException | None = None
48 acquire_error_before_descriptor: BaseException | None = None
49 descriptor: int | None = None
50 release_error: BaseException | None = None
51 release_error_before_close: BaseException | None = None
52
53 async def _acquire(self) -> None: # ty: ignore[invalid-method-override] # coroutine backends are supported
54 if self.acquire_error_before_descriptor is not None:
55 raise self.acquire_error_before_descriptor
56 self.descriptor = self._context.lock_file_fd = os.open(self.lock_file, os.O_CREAT | os.O_RDWR, 0o600)
57 if self.acquire_error is not None: # pragma: needs fork
58 raise self.acquire_error
59
60 async def _release(self) -> None: # ty: ignore[invalid-method-override] # coroutine backends are supported
61 if self.release_error_before_close is not None: # pragma: needs fork
62 raise self.release_error_before_close
63 os.close(cast("int", self._context.lock_file_fd))
64 self._context.lock_file_fd = None
65 if self.release_error is not None:
66 raise self.release_error
67
68
69@NEEDS_FORK # pragma: needs fork

Calls

no outgoing calls