Apparently Andrew's branch fixes this so I'll leave it for now.
One part of the problem is that the ParamikoNotPresent exception is
absorbed by bzrlib.transport.smart. But at a deeper level, the smart
transport shouldn't depend on paramiko, unless it's unable to find any
other ssh implementation.
I can confirm this is a bug.
Apparently Andrew's branch fixes this so I'll leave it for now.
One part of the problem is that the ParamikoNotPresent exception is transport. smart. But at a deeper level, the smart
absorbed by bzrlib.
transport shouldn't depend on paramiko, unless it's unable to find any
other ssh implementation.