<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, 16 Aug 2016 at 16:15 Victor Stinner <<a href="mailto:victor.stinner@gmail.com">victor.stinner@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">By the way, for all these reasons, I'm not really excited by Python<br>
3.6 change exposing os.DirEntry ( <a href="https://bugs.python.org/issue27038" rel="noreferrer" target="_blank">https://bugs.python.org/issue27038</a><br>
).<br></blockquote><div><br></div><div>It was exposed at Guido's request for type hinting in typeshed.</div><div><br></div><div>-Brett</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Victor<br>
<br>
2016-08-17 1:11 GMT+02:00 Victor Stinner <<a href="mailto:victor.stinner@gmail.com" target="_blank">victor.stinner@gmail.com</a>>:<br>
> 2016-08-16 23:13 GMT+02:00 Guido van Rossum <<a href="mailto:guido@python.org" target="_blank">guido@python.org</a>>:<br>
>> It sounds fine to just submit a patch to add and document the DirEntry<br>
>> constructor. I don't think anyone intended to disallow your use case, it's<br>
>> more likely that nobody thought of it.<br>
><br>
> Currently, the DirEntry constructor expects data which comes from<br>
> opendir/readdir functions on UNIX/BSD or FindFirstFile/FindNextFile<br>
> functions on Windows. These functions are not exposed in Python, so<br>
> it's unlikely that you can get expected value. The DirEntry object was<br>
> created to avoid syscalls in the common case thanks to data provided<br>
> by these functions.<br>
><br>
> But I guess that Brendan wants to create a DirEntry object which would<br>
> call os.stat() the first time that an attribute is read and then<br>
> benefit of the code. You loose the "no syscall" optimization, since at<br>
> least once syscall is needed.<br>
><br>
> In this case, I guess that the constructor should be<br>
> DirEntry(directory, entry_name) where os.path.join(directory,<br>
> entry_name) is the full path.<br>
><br>
> An issue is how to document the behaviour of DirEntry. Objects created<br>
> by os.scandir() would be "optimized", whereas objects created manually<br>
> would be "less optimized".<br>
><br>
> DirEntry is designed for os.scandir(), it's very limited compared to<br>
> pathlib. IMO pathlib would be a better candidate for "cached os.stat<br>
> results" with a full API to access the file system.<br>
><br>
> Victor<br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-ideas" rel="noreferrer" target="_blank">https://mail.python.org/mailman/listinfo/python-ideas</a><br>
Code of Conduct: <a href="http://python.org/psf/codeofconduct/" rel="noreferrer" target="_blank">http://python.org/psf/codeofconduct/</a><br>
</blockquote></div></div>