You may also need to check for ``collections.Mapping`` and ``UserDict.UserDict`` instances - they may not be derived from the builtin ``dict`` class, but would be valid input for ``update()``.  I could be wrong though, I am not remembering the type hierarchy very well.