fslib
fslib is a wrapper around Python’s os.* low-level functions, aiming to:
Provide more pythonic APIs for low-level primitives
Merge various physical locations into a simple pseudo-filesystem for the application
Handle UnionFS-like features, including transparent write overlay on top of read-only paths
fslib supports Python 3.3+; it requires only the standard Python library.
Links
Documentation: (none yet)
Official repository: https://github.com/rbarrois/fslib/
Package: https://pypi.python.org/pypi/fslib/
Download
PyPI: https://pypi.python.org/pypi/fslib/
$ pip install fslib
Source: https://github.com/rbarrois/fslib/
$ git clone git://github.com/rbarrois/fslib/
$ python setup.py install
Usage
Replacing import os
>>> import fslib
>>>
>>> fs = fslib.FileSystem(fslib.OSFS('/'))
>>> fs.dir_exists('/etc/')
True
>>> fs.listdir('/')
['/etc', '/dev', '/proc']
Forcing read-only
In order to ensure that user code doesn’t change any physical file, fslib provides a simple wrapper that prevents writing to the filesystem.
>>> import fslib
>>> import fslib.stacking
>>>
>>> fs = fslib.FileSystem(fslib.stacking.ReadOnlyFS(fslib.OSFS('/')))
>>> fs.read_one_line('/etc/hostname')
"ithor"
>>> fs.open('/tmp/x', 'w')
OSError: [Errno 30] Read-only file system: '/tmp/x'
UnionFS-like mounting
fslib provides a UnionFS-like wrapper as fslib.stacking.UnionFS. This backend will provide a merged view of several branch, redirecting all writes to the branch(es) declared writable=True.
>>> import fslib, fslib.builders, fslib.stacking
>>>
>>> mem_fs = fslib.builders.make_memory_fake()
>>> union_fs = fslib.stacking.UnionFS()
>>> union_fs.add_branch(mem_fs, ref='memory', rank=0, writable=True)
>>> union_fs.add_branch(fslib.stacking.ReadOnlyFS(fslib.OSFS('/')), ref='os', rank=1)
>>>
>>> fs = fslib.FileSystem(backend=union_fs)
>>> fs.writelines('/tmp/x', ['aa', 'bb'])
>>>
>>> open('/tmp/x', 'r')
IOError: [Errno 2] No such file or directory: '/tmp/x'
>>> fs.file_exists('/tmp/x')
True
>>> fs.readlines('/tmp/x')
['aa', 'bb']
>>> fs.access('/tmp/x', os.F_OK)
True
Unix-like filesystem tree
It is possible to “overlay” physical or virtual file systems to present a simple, unified structure to the program.
>>> import fslib, fslib.stacking
>>> mnt = fslib.MountFS()
>>> mnt.mount_fs('/', fslib.stacking.ReadOnlyFS(fslib.OSFS('/')))
>>> mnt.mount_fs('/home/xelnor/.myapp', fslib.stacking.MemoryFS())
>>> mnt.mount_fs('/home/xelnor/.myapp/cache', fslib.OSFS('/tmp/myapp/shared_cache'))
With this setup:
All reads/writes to /home/xelnor/.myapp/cache will actually occur within /tmp/myapp/shared_cache
All reads/writes within /home/xelnor/.myapp (except for /cache) will occur in memory
No write will be permitted anywhere else.
Metadata
Release files for fslib 0.3.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| fslib-0.3.4.tar.gz | 15.0 kB | Without provenance | Details for fslib-0.3.4.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| fslib-0.3.4-py3-none-any.whl | Python 3 | none | any | Details for fslib-0.3.4-py3-none-any.whl |
Total release size: 30.1 kB
Release files / fslib-0.3.4.tar.gz
| Download URL | fslib-0.3.4.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2f6949da0ab140c8a7836c2d6834fbe6ec87f91c2dc368171cc008733a18d22
|
|
BLAKE2b-256 checksum How to use checksums |
f665b34e6f1883de5fdccf1d97d2507d8c3d38e2947eff11c3797c96f9b43823
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7
|
Release files / fslib-0.3.4-py3-none-any.whl
| Download URL | fslib-0.3.4-py3-none-any.whl |
|---|---|
| Size | 15.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
224dcd976fee59088a61d0a92b6c2313a7fb4e7286794a0e16e90a6fd07e6982
|
|
BLAKE2b-256 checksum How to use checksums |
042d58e3a8053969aeefc348b50d73cf46ca4cdf364976cd2bfd9fdac0cfea27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7
|
Security for fslib 0.3.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.