Release one level of the current lock. See :meth:`ReadWriteLock.release` for full semantics. :param force: if ``True``, release the lock completely regardless of the current lock level :raises RuntimeError: if no lock is currently held and *force* is ``False``
(self, *, force: bool = False)
| 138 | return AsyncAcquireReadWriteReturnProxy(lock=self) |
| 139 | |
| 140 | async def release(self, *, force: bool = False) -> None: |
| 141 | """ |
| 142 | Release one level of the current lock. |
| 143 | |
| 144 | See :meth:`ReadWriteLock.release` for full semantics. |
| 145 | |
| 146 | :param force: if ``True``, release the lock completely regardless of the current lock level |
| 147 | |
| 148 | :raises RuntimeError: if no lock is currently held and *force* is ``False`` |
| 149 | |
| 150 | """ |
| 151 | await self._run(self._lock.release, force=force) |
| 152 | |
| 153 | @asynccontextmanager |
| 154 | async def read_lock(self, timeout: float | None = None, *, blocking: bool | None = None) -> AsyncGenerator[None]: |