I recently tried to answer the question: "When moving a file to a destination that is an already existing file, is the destination overwritten?" From the current docs I understood that if src and dst are on the same filesystem then os.rename is used, if they are on different filesystems then copy + remove is used instead. Since os.rename fails on Windows if the destination exists I concluded that shutil.move would fail on Windows and overwrite dst on Unix.
Should information on Windows behavior, which you experienced be included too? How about - It uses :func:`os.rename` to perform the move. If that fails, for example because src and dst are on different filesystems or in case of Windows where rename cannot be done if dst exists, fallback to copying src (with :func:`copy2`) to the dst and then removing src.