
Summary: It's an undocumented feature, not an implementation detail.
I wrote:
And if you're a software historian, now perhaps look at https://github.com/python/cpython/commits/3.7/Lib/timeit.py
Well, I've bitten my own bait, and have found it. See
https://github.com/python/cpython/commit/d8faa3654 Merged revisions 53952-54987 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk
This is a compendium commit, which contains
r54348 | georg.brandl | 2007-03-13 12:32:21 -0700 (Tue, 13 Mar 2007) | 4 lines
Patch #1533909: the timeit module now accepts callables in addition to strings for the code to time and the setup code. Also added two convenience functions for instantiating a Timer and calling its methods.
For the diff see https://github.com/python/cpython/commit/d8faa3654#diff-f21e8a2e7addb312903b...
So to me that's conclusive. An undocumented feature.