NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3669 most downloaded on PyPI
Read write lock for asyncio.
Last release 7 months ago
20 Feb 2026
Release timing varies
gaps range from 6 weeks to 2.2 years
Most releases are documented
notes for 12 of 15 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
17 releases · first in 2014
Fixed a cross-event-loop race condition in lock acquisition.
__slots__.Nothing published for this version
Nothing published for this version
One column per quarter.
Lazily evaluate current loop to allow instantiating lock outside of async functions.
Drop deprecated loop parameter from RWLock constructor
loop parameter from RWLock constructorFix a bug that makes concurrent writes possible under some (rare) conjunctions
Remove explicit loop usage in asyncio.sleep() call, make the library forward compatible with Python 3.10
Remove explicit loop usage in asyncio.sleep() call, make the library forward compatible with Python 3.10
Deprecate passing explicit loop argument to RWLock constructor
Fix a bug with cancelation during acquire #170 (thanks @romasku)
Deprecate passing explicit loop argument to RWLock constructor
Deprecate creation of RWLock instance outside of async function context
Minimal supported version is Python 3.6
The library works with Python 3.8 and Python 3.9 seamlessly
Nothing published for this version
Wake up all readers after writer releases lock #60 (thanks @ranyixu)
Wake up all readers after writer releases lock #60 (thanks @ranyixu)
Fixed Python 3.7 compatibility
Removed old yield from syntax
Minimal supported version is Python 3.5.3
Removed support for none async context managers
Fix corner cases and deadlock when we upgrade lock from write to read #39
Fix corner cases and deadlock when we upgrade lock from write to read #39
Use loop.create_future instead asyncio.Future if possible
Added support for Python 3.5 (including async with statements)
Major release
async with statements).reader_lock -> .reader, .writer_lock -> .writer. Backward compatibility is preserved.Support Python 3.5 and async with statement
rename .reader_lock -> .reader, .writer_lock -> .writer. Backward compatibility is preserved.
* Add .locked property
Add .locked property
* Make .release() non-coroutine
Make .release() non-coroutine
Nothing published for this version
* Initial release
Initial release
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →