Back to the connect method, it takes the class returned from the adapter_class method, and just instantiates a new instance of that class using the given options.
That's basically all you need to do for the initial setup to work. As long as all subclasses implement the appropriate methods, the wrapping is fairly transparent.
Transparent that is, until you have to handle exceptions raised by the underlying backends.