- No need to empty collections, they're generated with a UUID and should
always be empty (the code to empty them does not actually run in CI
right now).
- Move deletion code to _after_ the yield, since that's the order in
which things happen.
- Delete all collections asynchronously.
Add asyncio to the storage backends and most of the codebase. A lot of
it merely uses asyncio APIs, but still doesn't actually run several
things concurrently internally. Further improvements will be added on
top of these changes
Thanks to Thomas Grainger (@graingert) for a few useful pointers
related to asyncio.
I don't want to ever have to sort imports again. It's a poor use of
developer time. Automate this with a pre-commit hook, and check this on
CI.
Developers: I suggest you configure your editor to use
`reorder_python_imports`. It uses the standard sorting, and detects
first/third party libs well.