Answering my own question with a summary of other answers and comments.
Not all challenges have __name__.
The workaround is to use three arguments getattr:
name = getattr(callable, '__name__', 'Unknown')
repr(callable) 'Unknown', :
name = getattr(callable, '__name__', repr(callable))