I've always considered this method to be a very strange thing, with its definition of empty being unlikely to be useful elsewhere. Why 4? my guess is that 4 characters is too small to be useful, e.g. {{a}} and [[a]] are 5 chars.
If isEmpty is unintentionally used on a category page, which on small wikis are usually 'empty' except for category links, the category page will be considered to be 'empty'. This is why interwiki.py needs to also check isCategory.
My gut feeling is that this method should be copied to be a function in interwiki.py, where you can optimise it how you want, so that it skips useless pages using faster algorithms. e.g. if the page is in a content namespace, rather than looking at interwikilinks and category links, I am guessing that the following will be much faster and be almost as good:
def simpleEmptyCheck(page):
try:
# get the 50th character, if it exists
page.text[50]
return False
except IndexError:
return TrueThen Page.isEmpty can be marked as @deprecated .
The use in page_tests would then be moved into a new test method in TestPageDeprecation.