{"id":22119616,"url":"https://github.com/pleiszenburg/pythonic-filesystems-in-userspace","last_synced_at":"2025-04-10T05:15:58.166Z","repository":{"id":98487108,"uuid":"189212455","full_name":"pleiszenburg/Pythonic-Filesystems-in-Userspace","owner":"pleiszenburg","description":"How to write Pythonic Filesystems in Userspace (FUSE) in 2019","archived":false,"fork":false,"pushed_at":"2019-05-30T08:43:08.000Z","size":14,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T06:27:06.418Z","etag":null,"topics":["dokan","dokany","fuse","fuse-filesystem","fusepy","libfuse","llfuse","macfuse","osxfuse","pyfuse3","refuse","winfsp"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc-by-sa-4.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pleiszenburg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-29T11:30:05.000Z","updated_at":"2023-09-08T17:54:17.000Z","dependencies_parsed_at":"2023-04-10T05:01:59.355Z","dependency_job_id":null,"html_url":"https://github.com/pleiszenburg/Pythonic-Filesystems-in-Userspace","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2FPythonic-Filesystems-in-Userspace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2FPythonic-Filesystems-in-Userspace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2FPythonic-Filesystems-in-Userspace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pleiszenburg%2FPythonic-Filesystems-in-Userspace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pleiszenburg","download_url":"https://codeload.github.com/pleiszenburg/Pythonic-Filesystems-in-Userspace/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248161283,"owners_count":21057556,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dokan","dokany","fuse","fuse-filesystem","fusepy","libfuse","llfuse","macfuse","osxfuse","pyfuse3","refuse","winfsp"],"created_at":"2024-12-01T14:16:05.044Z","updated_at":"2025-04-10T05:15:58.100Z","avatar_url":"https://github.com/pleiszenburg.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pythonic Filesystems in Userspace (FUSE) in 2019\n\n[Filesystem in Userspace](https://en.wikipedia.org/wiki/Filesystem_in_Userspace)\n\n## API\n\nTwo widely used versions exist: 2 and 3. While version 3 is currently being adopted by more and more projects, most FUSE file systems tend to use version 2 at this point.\n\nBesides API versions, there are also two API levels: The high level FUSE API and the low level FUSE API.\n\nNot all FUSE libraries and bindings offer both API versions and/or API levels. This must be taken into consideration when developing a cross-platform FUSE file system.\n\n## Libraries\n\nWhile FUSE is (at least in the Unix world) a Kernel feature, several user space libraries exist for easy access. `libfuse` acts as the reference implementation.\n\n- [libfuse](https://github.com/libfuse/libfuse) (Linux, FreeBSD)\n- [libfuse](https://github.com/openbsd/src/tree/master/lib/libfuse) (OpenBSD)\n- [librefuse](https://github.com/NetBSD/src/tree/netbsd-8/lib/librefuse) (NetBSD) through [PUFFS](https://en.wikipedia.org/wiki/PUFFS_(NetBSD))\n- [FUSE for macOS](https://github.com/osxfuse/osxfuse) (OSX)\n- [MacFUSE](https://code.google.com/archive/p/macfuse/) (OSX), no longer maintained\n- [WinFsp](https://github.com/billziss-gh/winfsp) (Windows)\n- [Dokany](https://github.com/dokan-dev/dokany) (Windows)\n- [Dokan](https://code.google.com/archive/p/dokan/) (Windows), no longer maintained\n\nIn summary, FUSE is supported on Linux, FreeBDS, OpenBSD, NetBSD, Mac OS X and Windows. APIs are (more or less) compatible. FUSE is also known to work on OpenSolaris/Illumos, Minix and Android.\n\n## Python bindings\n\nSeveral competing Python bindings for FUSE exist. Some are unmaintained. Some are offering access only to the high level API or to the low level API. Some are not suitable for cross-platform use.\n\n- [fuse-python](https://github.com/libfuse/python-fuse) (used by 90+)\n- [llfuse](https://github.com/python-llfuse/python-llfuse) (used by *30+*), officially no longer maintained\n- [pyfuse3](https://github.com/libfuse/pyfuse3) (used by 3+)\n- [fusepy](https://github.com/fusepy/fusepy) (used by 300+), [practically no longer maintained](https://github.com/fusepy/fusepy/issues/134)\n- [refuse](https://github.com/pleiszenburg/refuse) (used by 2+)\n\nGetting precise usage statistics is not trivial. The above numbers are based partially on GitHub's \"used by\" statistics and partially on current numbers from [libraries.io](https://www.libraries.io).\n\n`python-fuse` (high level API, versions 2) and `python-llfuse` (low level API, version 2) were developed by the original `libfuse` authors - specifically as bindings to `libfuse`. While `python-fuse` is still being maintained, support for `python-llfuse` has been dropped. It is superseded by `pyfuse3` (low level API, version 3), which is also being developed by the `libfuse` team. `pyfuse3` is the currently only async-enabled Python FUSE package.\n\n`fusepy` is the currently only viable cross-platform Python implementation. It offers both low and high level API bindings in version 2 where possible. Its is based on `ctypes`. Development seized in 2016 and was only briefly resumed in 2018. Several forks attempt to continue development, e.g. `refuse`.\n\n## Python binding abstraction layers\n\n- [fusetree](https://github.com/paulo-raca/fusetree)\n\n## Introductions\n\n- 2013-10-30: [Writing a FUSE filesystem in Python](https://www.stavros.io/posts/python-fuse-filesystem/)\n\n## Relevant news\n\n- 2019-03-12: [FUSE Is Fusing More Performance Improvements In Linux 5.1](https://www.phoronix.com/scan.php?page=news_item\u0026px=Faster-FUSE-Linux-5.1)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpleiszenburg%2Fpythonic-filesystems-in-userspace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpleiszenburg%2Fpythonic-filesystems-in-userspace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpleiszenburg%2Fpythonic-filesystems-in-userspace/lists"}