A fancy version of Python’s builtin dir() function.
In recent versions of Python, hasattr() only catches AttributeError. This catches all errors.
Extended version of the Python builtin dir(), which does a few extra checks, and supports common objects with unusual internals that confuse dir(), such as Traits and PyCrust.
This version is guaranteed to return only a list of true strings, whereas dir() returns anything that objects inject into themselves, even if they are later not really valid for attribute access (many extension libraries have such bugs).