All notable changes to this project will be documented in this file.
The format is inspired by Keep a Changelog, and this project adheres to Semantic Versioning.
1.1.0 - 2024-03-03
- (mkfs) PR #30: Add support for different FAT12 cluster sizes for filesystems up to 256MB by @zurcher / @Microsoft
- PR #36: Add Python 3.12 support by @zurcher / @Microsoft
- #34 (DosDateTime) PR #35: Gracefully handle invalid file timestamps by @beckerben
- #31 (FATDirectoryEntry): Handle file sizes larger than 4GB gracefully by responding with
PyFATException
anderrno=E2BIG
- Properly lock I/O on write operations to avoid issues on concurrent writes
- Deprecated
FATDirectoryEntry.{g,s}et_size()
method in favor ofFATDirectoryEntry.size
property (will be removed in PyFatFS 2.0) - Only warn of broken long filename entries, do not fail when encountering them
- Convert given PyFilesystem2 opener string arguments to correct type (e.g., string to int)
- Discard unknown PyFilesystem2 opener arguments, do not pass through to underlying PyFatFS constructor
- Lazy load directory entries for performance and regex2fat compatibility
- Introduce
lazy_load
parameter to allow restoring previous behavior - PR #32: Fix tree iteration on non-lazy load by @zurcher / @Microsoft
- PR #33: Fix missing parent directory entry link on lazy-load by @zurcher / @Microsoft
- PR #33: Do not re-populate directory structure from disk on pending entry change by @zurcher / @Microsoft
- Introduce
- PR #36: Drop Python 3.6 & 3.7 support by @zurcher / @Microsoft
1.0.5 - 2022-04-16
- Issue #26: Fix deserialization of date and time values ({a,c,m}time)
1.0.4 - 2022-04-15
- Issue #24: Do not reorder directory entries when adding/removing entries in a directory
- Issue #25: Properly truncate files when configured for truncating (PyFilesystem2/FatIO)
- Always retain last cluster when truncating a file to 0 bytes
- Issue #27: Remove outdated
Not yet properly implemented
hint from setinfo docstring
1.0.3 - 2022-02-27
- Issue #22: Properly combine date and time
DosDateTime
objects when querying ctime/mtime
1.0.2 - 2022-02-27
1.0.1 - 2022-02-08
- (mkfs) Handle offset correct in case of multiple partitions.
- (mkfs) Issue #18 Add volume label dir entry
- (mkfs) Fix default size detection
1.0.0 - 2022-02-03
- Static
new
method forFATDirectoryEntry
- PR #17:
mkfs
method by @wackinger / @Draegerwerk FATHeader
class replaced byBootSectorHeader
- Initial support of
FSInfo
formkfs
- PR #17:
- Expose
PyFat.set_fp
function to allow using BytesIO / in-memory files. ProvidePyFatBytesIOFS
class for PyFilesystem2
- Remove duplicated code
- Properly handle non-ASCII short file names / 8DOT3
- Mark dir/file entries as empty on deletion
- Do not allow creating files when a folder with the same name already exists
- Do not allow creating folders when a file with the same name already exists
- In order to fix non-ASCII short file names,
FATDirectoryEntry.name
is now ofEightDotThree
type instead ofbytes
- Legacy
byte_repr()
function,__bytes__()
is to be used instead as a drop-in replacement to serialize FAT and dentry data for writing to disk
0.3.1 - 2021-09-04
- Fix performance regression on FAT16/32 when serializing a FAT to disk via
__bytes__
- Improve performance by only parsing fat size once on open() instead of multiple times
0.3.0 - 2021-09-04
- Support for dirty bit, detects unclean unmounts of a filesystem, sets dirty bit on mount and clears it on unmount/close
- Implement
__bytes__()
instead ofbyte_repr()
, it will be removed in 1.0
0.2.0 - 2021-04-07
readinto
method to directly read into a bytearray- Write support for FAT12
- Lower required minimum version of PyFilesystem2 to 2.4.0
- Do not fail with
RemoveRootError
onremovetree("/")
openbin
now sets theb
mode on file open- Support non-standard Linux formatted filesystems (i.e. FAT32 with less than 65525 clusters)
- Emits a warning when such a filesystem is encountered
- Remove check for boot signature version
0.1.2 - 2021-01-05
- Fix calculation of FAT entries for FAT12
- PR #6: Fix bug in parsing LFNs when opening multiple file systems by @koolkdev
0.1.1 - 2021-01-04
- Issue #4: Removal of last entry in directory leaves remnants
- PR #5: Fix creating directory with name that already conforms to 8DOT3 by @koolkdev
0.1.0 - 2021-01-03
Initial release of pyfatfs.
- Read-only support for FAT12
- Read-write support for FAT16/32
- Support for long file names (VFAT)
- PR #1: Support FAT12/FAT16 disks without extended signature by @akx
- PyFilesystem2 opener + API abstraction