<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jan 5, 2016 at 12:27 PM, Brendan Moloney <span dir="ltr"><<a href="mailto:moloney@ohsu.edu" target="_blank">moloney@ohsu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">




<div>
<div style="direction:ltr;font-family:Tahoma;color:rgb(0,0,0);font-size:10pt">The main issue is the lack of stat caching. That is why I wrote my own module around scandir which includes the DirEntry objects for each path so that the consumer can also do stuff
 with the cached stat info (like check if it is a file or directory). Often we won't need to call stat on the path at all, and if we do it will only be once.<br clear="all"></div></div></blockquote></div><br></div><div class="gmail_extra">I wonder if stat() caching shouldn't be made an orthogonal optional feature of Path objects somehow; it keeps coming back as useful in various cases even though we don't want to enable it by default.<br><br></div><div class="gmail_extra">One problem with stat() caching is that Path objects are considered immutable, and two Path objects referring to the same path are completely interchangeable. For example, {pathlib.Path('/a'), pathlib.Path('/a')} is a set of length 1: {PosixPath('/a')}. But if we had e.g. Path('/a', cache_stat=True), the behavior of two instances of that object might be observably different (if they were instantiated at times when the contents of the filesystem was different). So maybe stat-caching Path instances should be considered unequal, or perhaps unhashable. Or perhaps they should only be considered equal if their stat() values are actually equal (i.e. if the file's stat() info didn't change).<br>.<br></div><div class="gmail_extra">So this is a thorny issue that requires some real thought before we commit to an API.<br><br>We might also want to create Path instances directly from DirEntry objects. (Interesting, the DirEntry API seems to be a subset of the Path API, except for the .path attribute which is equivalent to the str() of a Path object.)<br><br></div><div class="gmail_extra">Maybe some of this can be done first as a 3rd party module forked from the original 3rd party pathlib? <a href="https://bitbucket.org/pitrou/pathlib/">https://bitbucket.org/pitrou/pathlib/</a> seems reasonably up to date.<br></div><div class="gmail_extra"><br>-- <br><div class="gmail_signature">--Guido van Rossum (<a href="http://python.org/~guido" target="_blank">python.org/~guido</a>)</div>
</div></div>