NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI
A python wrapper for littlefs
Last release 1 months ago
17 Aug 2026
Release timing varies
gaps range from 1 weeks to 5 months
Most releases are documented
notes for 27 of 31 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
31 releases · first in 2019
update littlefs submodule v2.11.2 -> v2.11.3 by @BrianPugh in #174
Full Changelog: v0.18.0...v0.19.0
The default filename encoding has changed from ASCII to UTF-8 ( littlefs.lfs.FILENAME_ENCODING ).
The default filename encoding has changed from ASCII to UTF-8 (littlefs.lfs.FILENAME_ENCODING).
littlefs stores names as opaque byte strings, so the API-level encoding is a free choice. Previously the ASCII default rejected any non-ASCII filename with a UnicodeEncodeError (and decoded directory entries as ASCII as well). Now non-ASCII names — Latin-1, CJK, emoji, etc. — round-trip cleanly through open, stat, listdir/scandir, mkdir, rename, and remove.
This change is backward compatible: ASCII is a strict subset of UTF-8, so all existing filenames encode and decode identically. New regression tests cover Latin-1, CJK, and astral-plane (emoji) filenames.
Thanks to @slash-proc for their first contribution! (PR #168)
Building on the UTF-8 default, the filename encoding is now selectable per filesystem instead of relying solely on the process-wide lfs.FILENAME_ENCODING global:
# Read an image whose names were written with a non-UTF-8 codec
fs = LittleFS(..., filename_encoding="shift-jis")LittleFS(filename_encoding=...) threads the chosen encoding through every path-handling call (open, stat, listdir/scandir, mkdir, remove, rename, and the *attr methods).lfs.* functions accept an optional filename_encoding argument that falls back to the module global, so existing callers are unaffected.latin-1, shift-jis) that would otherwise mis-decode or raise.The littlefs-python CLI gained several options on the shared parser, available to the create, extract, list, and repl commands:
--attr-max — maximum custom attribute size per file.--file-max — maximum file size.--inline-max — maximum inline file size (limiting this can improve flash usage); 0 uses the library default.--filename-encoding — encode/decode image filenames with a non-UTF-8 codec (e.g. latin-1, shift-jis); defaults to UTF-8.Note the distinction surfaced in the help text and docs:
--name-max, --attr-max, and --file-max are stored in the image superblock and must match when mounting an existing image.--inline-max is a format-time option.--filename-encoding is a host-side encode/decode choice that is never stored in the image. You must extract an image with the same --filename-encoding that was used to create it, otherwise filenames will fail to decode or come out as mojibake.Thanks to @amgross for the additional CLI options! (PR #160)
scandir directory-handle leak: directory iteration is now wrapped in try/finally so the underlying handle is always closed via dir_close, even if a read raises mid-iteration (e.g. a UnicodeDecodeError from a mismatched filename encoding).lfs.file_sync return value: now returns the error code, matching its -> int type stub and the behavior of every other file_* function (it was the lone outlier returning None).lfs.dir_read is now annotated as returning Optional[LFSStat] (it returns None at end-of-directory).pypa/cibuildwheel from 3.3.1 to 3.4.1 (PR #165).pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (PR #166).Full Changelog: v0.17.1...v0.18.0
One column per quarter.
Fix create CLI command not following symlinks when globbing source directory by @skrat in #151
create CLI command not following symlinks when globbing source directory by @skrat in #151print() in --compact code path that wasn't gated by --verbose by @amgross in #153block_count by @amgross in #157--compact producing corrupt images due to filesystem walk order differing from on-disk order by @amgross in #159UserContextWinDisk by @amgross in #158Full Changelog: v0.17.0...v0.17.1
Add the LFSConfig .inline_max attribute by @amgross in #148
Add repl command to the CLI to interact with an existing littlefs image. By @radrogow in #143
update littlefs core from v2.11.0 to v2.11.2 by @BrianPugh in #141
limits.h by @BrianPugh in #139Full Changelog: v0.14.0...v0.15.0
Update littlefs 2.11.0 by @BrianPugh in #125
Update LittleFS core to v2.10.1 -> v2.10.2 .
The CLI list command now has --block-size as required. By @niggowai in #119
update littlefs to v2.10.1 by @BrianPugh in #117
Update LFS to v2.10.0 by @BrianPugh in https://github.com/jrast/littlefs-python/pull/114
Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.12.0...v0.13.0
have ci build cp37 wheels by @BrianPugh in https://github.com/jrast/littlefs-python/pull/98
Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.11.0...v0.12.0
Commands now take positional arguments in an intuitive order.
unpack has been renamed to extract.# old
$ littlefs-python create my_dir/ --image=lfs.bin --block-size=4096 --fs-size=1mb
# new
$ littlefs-python create my_dir/ lfs.bin --block-size=4096 --fs-size=1mb
# If output binary file not specified, defaults to output "lfs.bin"
$ littlefs-python create my_dir/ --block-size=4096 --fs-size=1mb
# old
$ littlefs-python unpack my_dir/ --image=lfs.bin --block-size=4096 --fs-size=1mb
# new (--fs-size is now inferred from binary)
$ littlefs-python extract lfs.bin my_dir/ --block-size=4096
# if output directory not specified, defaults to current directory
$ littlefs-python extract lfs.bin --block-size=4096
# old
$ littlefs-python list --image=lfs.bin --block-size=4096 --fs-size=1mb
# new (--fs-size is now inferred from binary)
$ littlefs-python list lfs.bin --block-size=4096
Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.10.3...v0.11.0
update littlefs to v2.9.2 by @BrianPugh in https://github.com/jrast/littlefs-python/pull/90
Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.10.2...v0.10.3
update core littlefs v2.9.0 -> v2.9.1
Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.10.1...v0.10.2
Fix mypy type-checking with regards to constants LFS_TYPE_REG/DIR. by @Krakonos in https://github.com/jrast/littlefs-python/pull/88
Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.10.0...v0.10.1
update littlefs to v2.9.0 by @BrianPugh in https://github.com/jrast/littlefs-python/pull/81
Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.9.3...v0.10.0
Remove the f-string self-documenting expression for better Python 3.7 support by @adokitkat in https://github.com/jrast/littlefs-python/pull/78
Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.9.2...v0.9.3
Flatten some of the package namespace and specify __all__ in __init__.py to help improve autocomplete in IDEs. by @BrianPugh in https://github.com/jra
__all__ in __init__.py to help improve autocomplete in IDEs. by @BrianPugh in https://github.com/jrast/littlefs-python/pull/71Full Changelog: https://github.com/jrast/littlefs-python/compare/v0.9.0...v0.9.1
add recursive=False flag to remove method by @BrianPugh in https://github.com/jrast/littlefs-python/pull/65
recursive=False flag to remove method by @BrianPugh in https://github.com/jrast/littlefs-python/pull/65LFS_NAME_MAX to 1022, the maximum valid value LittleFS supports. Fixes issues that occurred when name_max=0 was specified. by @BrianPugh in https://github.com/jrast/littlefs-python/pull/62Full Changelog: https://github.com/jrast/littlefs-python/compare/0.8.0...v0.9.0
Support for LittleFS v2.8 by @BrianPugh in https://github.com/jrast/littlefs-python/pull/57
Full Changelog: https://github.com/jrast/littlefs-python/compare/0.7.1...0.8.0
examples/mkfsimg.py: add an option to specify disk version by @yamt in https://github.com/jrast/littlefs-python/pull/54
Full Changelog: https://github.com/jrast/littlefs-python/compare/0.7.0...0.7.1
LFSConfig now uses proper keyword arguments by @BrianPugh in https://github.com/jrast/littlefs-python/pull/49
Full Changelog: https://github.com/jrast/littlefs-python/compare/0.6.2...0.7.0
Nothing published for this version
Updated Github Actions to newer Version (@dependabot)
Full Changelog: https://github.com/jrast/littlefs-python/compare/0.4.0...0.5.0
Fix example from README (SyntaxError) by @mashi in https://github.com/jrast/littlefs-python/pull/10
Full Changelog: https://github.com/jrast/littlefs-python/compare/0.3.0...0.4.0
Allow users to open the filesystem with mode as 'wb' or 'rb' by @JohnVillalovos in https://github.com/jrast/littlefs-python/pull/6
Full Changelog: https://github.com/jrast/littlefs-python/compare/0.2.0...0.3.0
Nothing published for this version
Upgraded littlefs to version 2.2.1
Upgraded littlefs to version 2.2.1
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →