> I'd *keep DirEntry.lstat() method* regardless of existence of > .stat(*, follow_symlinks=True) method (despite the slight violation of > DRY principle) for readability. `dir_entry.lstat().st_mode` is more > consice than `dir_entry.stat(follow_symlinks=False).st_mode` and the > meaning of lstat is well-established -- get (symbolic link) status [2].
The meaning of lstat() is well-established, so I don't mind this. But I don't think it's necessary, either. My thought would be that in new code/functions we should kind of prescribe best-practices rather than leave the options open. Yes, it's a few more characters, but "follow_symlinks=True" is allow much clear than "l" to describe this behaviour, especially for non-Linux hackers. > I suggest *renaming .full_name -> .path* due to reasons outlined in [1]. > > [1]: https://mail.python.org/pipermail/python-dev/2014-July/135441.html Hmmm, perhaps. You suggest .full_name implies it's the absolute path, which isn't true. I don't mind .path, but it kind of sounds like "the Path object associated with this entry". I think "full_name" is fine -- it's not "abs_name". > follow_symlinks (if added) should be *keyword-only parameter* because > `dir_entry.is_dir(False)` is unreadable (it is not clear at a glance > what `False` means in this case). Agreed follow_symlinks should be a keyword-only parameter (as it is in os.stat() in Python 3). > Exceptions are part of the public API. pathlib is inconsitent with > os.path here e.g., os.path.isdir() ignores all OS errors raised by > the stat() call but the corresponding pathlib call ignores only broken > symlinks (non-existent entries). > > The cherry-picking of which stat errors to silence (implicitly) seems > worse than either silencing the errors (like os.path.isdir does) or > allowing them to propagate. Hmmm, you're right there's a subtle difference here. I think the os.path.isdir() behaviour could mask real errors, and the pathlib behaviour is more correct. pathlib's behaviour is not implicit though -- it's clearly documented in the docs: https://docs.python.org/3/library/pathlib.html#pathlib.Path.is_dir > Returning False instead of raising OSError in is_dir() method simplifies > the usage greatly without (much) negative consequences. It is a *rare* > case when silencing errors could be more practical. I think is_X() *should* fail if there are permissions errors or other fatal errors. Whether or not they should fail if the file doesn't exist (unlikely to happen anyway) or on a broken symlink is a different question, but there's a good prececent with the existing os/pathlib functions there. -Ben _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com