Major Release v3.0.0
What's Changed
New v3 major release. This is a major version with breaking changes covering two significant architectural
improvements.
ANTLR4 Grammar-Based Parsing (PR #149)
Sequence pattern parsing has been migrated from regex to a shared ANTLR4 grammar, aligning the Python
implementation with the Go and C++ implementations for consistency and maintainability.
Removed API:
FileSequence.SPLIT_REandFileSequence.DISK_REclass variablesconstants.SPLIT_PATTERN,constants.SPLIT_RE,constants.SPLIT_SUB_PATTERN,constants.SPLIT_SUB_RE
Removed files:
setup.py→ replaced bypyproject.tomlsrc/fileseq/__version__.py→ version now derived from git tags viasetuptools-scmrequirements.txt→ replaced bypyproject.tomloptional dependency groups (pip install ".[dev]",pip install ".[docs]")
Behavioral changes:
- Auto-padding now only applies to single-frame files without explicit padding —
foo.1@@@@.exrpreserves
@@@@rather than re-padding
Range-Based FrameSet (PR #150)
FrameSet now stores frame ranges compactly as Range objects rather than expanding all frames upfront,
reducing memory usage by ~99.9%+ for large ranges (e.g. 100k frames drops from ~7.8MB to ~536 bytes).
Deprecated API (raises DeprecationWarning):
FrameSet.items— useset(fs)insteadFrameSet.order— uselist(fs)orfs[i]instead
Bug fixes:
isConsecutive()now correctly handles interleaved ranges and empty framesetshasSubFrames()correctly detects decimal notation like"1.0-5.0"- Stagger modifier (
:) now properly deduplicates frames
Pull Requests
- Implement ANTLR4 grammar parsing and migration from regex focus (refs #147) by @justinfx in
#149 - Refactor FrameSet to use range-based storage (fixes #148) by @justinfx in
#150
Full Changelog: v2.3.1...v3.0.0