<p dir="ltr"><br>
On Nov 15, 2012 2:06 PM, "Ben Hoyt" <<a href="mailto:benhoyt@gmail.com">benhoyt@gmail.com</a>> wrote:<br>
><br>
> >> """Yield tuples of (filename, stat_result) for each filename in<br>
> >> directory given by "path". Like listdir(), '.' and '..' are skipped.<br>
> >> The values are yielded in system-dependent order.<br>
> >><br>
> >> Each stat_result is an object like you'd get by calling os.stat() on<br>
> >> that file, but not all information is present on all systems, and st_*<br>
> >> fields that are not available will be None.<br>
> >><br>
> >> In practice, stat_result is a full os.stat() on Windows, but only the<br>
> >> "is type" bits of the st_mode field are available on Linux/OS X/BSD.<br>
> >> """<br>
> ><br>
> > There's a code smell here, in that the doc for Unix variants is incomplete<br>
> > and wrong. Whether or not you get the d_type values depends on the OS having<br>
> > that extension. Further, there's a d_type value (DT_UNKNOWN) that isn't a<br>
> > valid value for the S_IFMT bits in st_mode (at least on BSD).<br>
><br>
> Not sure I understand why the docstring above is incomplete/wrong.</p>
<p dir="ltr">It's incomplete because it doesn't say  what happens on other Posix systems. It's wrong because it implies that the type bits of st_mode are always available, when that's not the case.</p>
<p dir="ltr">Better would be 'on Posix systems, if st_mode is not None only the type bits are valid.' Assuming that the underlying code translates DT_UNKNOWN to binding st_mode to None.</p>