PyFilesystem / pyfilesystem2

Python's Filesystem abstraction layer
https://www.pyfilesystem.org
MIT License
1.98k stars 175 forks source link

Maybe consider a "visibility" info namespace for "hidden" files #166

Open althonos opened 6 years ago

althonos commented 6 years ago

Hi Will,

now that the typing is merged, I was thinking about adding support for a visibility (or hidden) info namespace, with a simple hidden key.

If that does seem like a good idead, I'll start working on a PR.

Concerned filesystems

In the core library, we could probably support:

I could also add support for hidden files once the namespace is stabilised to:

Semantics of OSFS

So here's what the situation about hidden files:

But if we were to support it directly that way, there would be an ambiguity on MacOS where we would not really know if a file is just a dotted file or a dotted file with the UF_HIDDEN flag as well.

So instead, here's what I propose:

and then addind a HideDotted wrapper that:

willmcgugan commented 6 years ago

Agree with exposing any 'hidden' state with an info namespace. But I'd probably not take dotfiles in to consideration at that level. Since 'hide dotfiles' is more of a convention of the OS and not really of the filesystem.

With regards to a wrapper, how about one which just removes hidden files / directories? It could take two switches omit_dotfiles and omit_hidden. Rather than set the hidden flag, it would just create the illusion that they didn't exist in the filesystem?

althonos commented 6 years ago

With regards to a wrapper, how about one which just removes hidden files / directories? It could take two switches omit_dotfiles and omit_hidden. Rather than set the hidden flag, it would just create the illusion that they didn't exist in the filesystem?

I thought that with a HideDotted wrapper, then you can quite easily filter out the hidden files if needed by your app.

Anyway, I'll open a PR so that we can see we are talking about the same thing ;)

geoffjukes commented 6 years ago

regarding omit_dotfiles, would it make sense to just add that to the walker? I currently use walk.files and exclude anything with /. in the name.