Package: littlefs-python
littlefs-python provides a thin wrapper aroundlittlefs, a filesystem targeted for
small embedded systems.
The wrapper provides a pythonic interface to the filesystem and allows the creation,
inspection and modification of the filesystem or individual files.
Even if this package usesCython, the goal is not to provide a high performance
implementation. Cython was chosen as an easy method is offered to generate the binding
and the littlefs library in one step.Quick ExamplesLet’s create a image ready to transfer to a flash memory using the pythonic interface:fromlittlefsimportLittleFS# Initialize the File System according to your specificationsfs=LittleFS(block_size=512,block_count=256)# Open a file and write some contentwithfs.open('first-file.txt','w')asfh:fh.write('Some text to begin with\n')# Dump the filesystem content to a filewithopen('FlashMemory.bin','wb')asfh:fh.write(fs.context.buffer)The same can be done by using the more verbose C-Style API, which closely resembles the
steps which must be performed in C:fromlittlefsimportlfscfg=lfs.LFSConfig(block_size=512,block_count=256)fs=lfs.LFSFilesystem()# Format and mount the filesystemlfs.format(fs,cfg)lfs.mount(fs,cfg)# Open a file and write some contentfh=lfs.file_open(fs,'first-file.txt','w')lfs.file_write(fs,fh,b'Some text to begin with\n')lfs.file_close(fs,fh)# Dump the filesystem content to a filewithopen('FlashMemory.bin','wb')asfh:fh.write(cfg.user_context.buffer)InstallationAslittlefsis bundled with the package you will need to install the correct version of
this package in successfully read or create images for your embedded system. If you start
from scratch the latest version is recommended.LittleFS VersionPackage VersionLittleFS File System Version2.9.0v0.10.X2.0 / 2.1[1]2.8.00.8.X-0.9.X2.0 / 2.1[1]2.7.00.7.X2.0 / 2.1[1]2.7.00.6.X2.0 / 2.1[1]2.6.10.5.02.12.2.10.4.02.02.2.10.3.02.0[1](1,2,3,4)Seetest/test_multiversion.pyfor examples.This is as simple as it can be:pip install littlefs-pythonAt the moment wheels (which require no build) are provided for the following platforms,
on other platforms the source package is used and a compiler is required:Linux: Python 3.8 - 3.12 / x86_64, arm64MacOS: Python 3.8 - 3.12 / x86_64, arm64Windows: Python 3.8 - 3.12 / 32- & 64-bitDevelopment SetupStart by checking out the source repository of littlefs-python:git clone https://github.com/jrast/littlefs-python.gitThe source code for littlefs is included as a submodule which must be
checked out after the clone:cd <littlefs-python>
git submodule update --initthis ensures that the correct version oflittlefsis cloned into
the littlefs folder. As a next step install the dependencies and install
the package:pip install -r requirements.txt
pip install -e .It’s highly recommended to install the package in a virtual environment!Development HintsTest should be run before committing:pytest testMypy is used for typechecking. Run it also on the tests to catch more issues:mypy src test test/lfsMypy stubs can be generated withstubgen src. This will create aoutdirectory
containing the generated stub files.Creating a new releaseNEW (with github deploy action):Make sure the master branch is in the state you want it.Create a new tag with the correct version number and push the tag to githubStart the “Build and Deploy Package” workflow for the created tag on githubOUTDATED (without github deploy action):Make sure the master branch is in the state you want it.Create a tag with the new version numberWait until all builds are completed. A new release should be created
automatically on github.Build the source distribution withpython setup.py sdist.Download all assets (usingci/download_release_files.py).Upload to pypi using twine:twine upload dist/*.