Raises :exc:`ValueError` if no signature can be provided, and :exc:`TypeError` if that type of object is not supported.Also, if the annotations are stringized, and ``eval_str`` is not false, the ``eval()`` call(s) to un-stringize the annotations could potentially raise any kind of exception.