Skip to content

Changes

3.2.2

  • 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.

1.0

  • NEW: Initial release.