| Now no tests will pass unless display_ds9 is set up.
Fair enough. I moved the exception to the first time you try to use ds9
| The change is a bit broader than the commit message states.
Updated to "Make "import lsst.afw.display.ds9" throw an error if ds9 is unavailable"
| By catching and raising a new exception, you're making it more difficult to debug what happened in setDefaultBackend. Can you maybe preserve the traceback?
There's no really good way to do this, but I agree; done.
| The commit summary message is a bit long (recommended max length is 50 chars).
It's much less than 80 chars, and it says what it needs to say.
| The layering of exception handling (e.g., "RuntimeError: Unable to set backend to
lsst.display.ds9: "No module named lsst.display.ds9" (is display_ds9 setup?)" comes from three different places) reminds me of the bad old days of handling return codes in C. Is it necessary?
It's adding more generic information at each level, which is a good thing and nothing to do with checking return codes at all levels. We have C++ support for adding messages and rethrowing, and this is the equivalent.