There is a type mismatch of BaseSite.redirect() returning a list and ApiSite.redirect() returning a string.
Usually BaseSite isn't used directly. Therefore I propose to fix the BaseSite side to return a single string with BaseSite.redirect().
The change was made for BaseSite in https://static-codereview.wikimedia.org/pywikipedia/7989.html