Coroutine support for Psycopg
Psycopg is a C extension module, so it can't be monkey-patched to be coroutine-friendly. Instead it now exposes a hook where a coroutine library can install its wait code. Psycopg will call the hook whenever it executes a libpq call that may block. Coroutine libraries can implement their "wait callaback" in order to have a chance to schedule a coroutine switch.
In this project there are wait callback implementations for a few coroutine libraries: they are licensed in order to allow their inclusion in the library.