The missing call to
dap.plugins.load()
is an oversight on our end, future versions of the client library should call this function automatically when you import one of the packages that deal with initdb/syncdb functionality. We should place it in dap.replicator.sql to make sure PostgreSQL support is always initialized before use. Experimental or third-party database integrations would still require an explicit call to the plugin registration function.
async/await has been around since Python version 3.5, released almost 8 years ago. However, I totally agree that not everyone is familiar with it, and we might want to link to a step-by-step tutorial. We don't wrap the examples individually into async functions because the examples would have more clutter, and you still couldn't run them as-is due to function scope isolation. On the other hand, I see tremendous value in sharing complete examples that run out of the box once you provide your client key/secret that you obtain from Instructure Identity Service.