FIX: Match Bash 5.3 for groups that contain a top level .. but are not valid sequences. If the group starts
like a sequence, such as {1..3{a,b}}, it is kept as text without expanding nested groups. If it doesn't, such as
{a..x{b}},}, only the opening { is skipped and what follows is parsed again, as in Bash.
3.2.1
FIX: Keep numeric sequences with non-ASCII digits literal, matching Bash.
FIX: Preserve an initial empty brace group after a valid expansion.
FIX: Fix ${...} inside a brace group ending the group early.
FIX: Fix an invalid sequence such as {1..a} being split at a later comma instead of being kept as text.
FIX: Fix numeric and character sequences with unary + signs ({+1..3}, {1..+3..2}, {a..z..+2})
being left as literal text instead of expanded like Bash, including Bash's zero-padding rule for + operands.
3.2
NEW: Drop Python 3.10 support.
FIX: Fix some division that could cause 1 off issues with limit checking.
FIX: Fix issues related to large range numbers and truncation when compared to Bash (@Rexyysilent).
FIX: Fix commas dropped or added when rebuilding invalid brace groups.
3.1
NEW: Add support for Python 3.15.
3.0.1
FIX: Fix case where character or number ranges could throw an exception (@santhreal).
3.0
BREAK: If there are no expansions, bracex will not return an empty string by default in the list. This matches
Bash. To get the old behavior, enable the new return_empty parameter to always return at least an empty string if
expansion yields no expansions.
FIX: To better match Bash, empty expansions are not returned as empty strings.
FIX: No longer backtrack if a sequence is evaluated and is deemed to be invalid.
2.7
NEW: Drop support for Python 3.9.
FIX: Fix issue where the parsing of literal strings was slow.
FIX: Fix issue related to tracking the count of expansions when a set was specified with an empty slot.
FIX: Fix issue related to chaining expansions.
2.6
NEW: Drop support for Python 3.8.
NEW: Add support for Python 3.14.
2.5.post1
FIX: Fix PyPI landing page.
2.5
NEW Add Python 3.13 support.
2.4
NEW: Formally declare support for Python 3.11 and 3.12.
NEW: Drop Python 3.7 support.
2.3.post1
CHORE: Fix issue where tar ball did not include all required files for running tests.
2.3
NEW: Drop Python 3.6 support.
NEW: Switch to Hatch build backend instead of Setuptools.
2.2.1
FIX: Remove excessive generator wrappers.
FIX: Use AnyStr for string static types instead of custom alias.
2.2
NEW: Support Python 3.10
NEW: Command line interface using python3 -m bracex
NEW: Add static types to API.
2.1.1
FIX: Expansion limit evaluated much too late and hanging can still occur with large expansions. Calculate
expansion count and assert limit while parsing strings to reduce chance of hanging.
2.1
NEW: Drop support for Python 3.5.
FIX: Fix potential corner case in looping logic.
2.0.1
FIX: Officially support Python 3.9.
2.0
NEW: An expansion limit of 1000 is enforced by default. This can be controlled, or even removed, via the
limit option.
1.4
NEW: Remove version and version_info and the associated deprecation code.
1.3
NEW: Drop Python 3.4 support.
1.2
NEW: Officially support Python 3.8.
1.1.1
FIX: Vendor pep562 in order to reduce dependencies.
1.1
NEW: Deprecate version and version_info in favor of the more standard __version__ and __version_info__.
FIX: Proper iteration when using iexpand.
1.0.2
FIX: Officially support Python 3.7.
1.0.1
FIX: Allow zero increments in sequence ranges: {1..10..0}. Zero will be treated as one just like Bash does.