[Python-Dev] stat module in C -- what to do with stat.py?

Stephen J. Turnbull stephen at xemacs.org
Sat Jun 22 02:01:53 CEST 2013

Gustavo Carneiro writes:

 > On Fri, Jun 21, 2013 at 8:20 PM, Steven D'Aprano <steve at pearwood.info> wrote:

 >> -1 Reading the Python source code is a very good way for beginner
 >> programmers to learn about things like this.

 > On the other hand, it is counter-productive to learn about code
 > that is conceptually _wrong_.

It's hardly _conceptually_ wrong when it's simply a pure-Python
version that reflects *exactly* the implementation used by many OSes
written in C.  It's purely a quality of implementation issue in that
it fails to observe the DRY principle and is non-portable.  But if you
look at <sys/stat.h> on Mac OS X or Linux, you'll see that the visible
definitions are protected by a thicket of #ifdefs, and the actual
definitions may be drawn from other files #include'd there, and not
using the definitions visible in <sys/stat.h> at all.  Ie, on those
systems the OS implementation possesses exactly the same structure
that CPython would have with a stat.py + _stat module implementation.

If the presence of the _stat module is documented and the rationale
briefly explained in stat.py, I suppose you have the best of both
worlds for the novice programmer (at the expense of a test for the
presence of _stat at import time).

More information about the Python-Dev mailing list