Skip to main content

Bash-style brace expansion for Python

build-status-img

Implements Brace Expansion as described in bash(1), with the following limitations:

  • A pattern containing unbalanced braces will raise an UnbalancedBracesError exception. In bash, unbalanced braces will either be partly expanded or ignored.

  • A mixed-case character range like '{Z..a}' or '{a..Z}' will not include the characters []^_` between Z and a.

braceexpand is tested with Python 2.6, 2.7, 3.2, 3.3, 3.4.

Installation

Drop the braceexpand.py file into your project, or install the braceexpand package from pypi:

$ pip install braceexpand

License

braceexpand is licensed unter the MIT License. See the included file LICENSE for details.

Examples

The braceexpand function returns an iterator over the expansions generated from a pattern.

>>> from braceexpand import braceexpand

# Integer range
>>> list(braceexpand('item{1..3}'))
['item1', 'item2', 'item3']

# Character range
>>> list(braceexpand('{a..c}'))
['a', 'b', 'c']

# Sequence
>>> list(braceexpand('index.html{,.backup}'))
['index.html', 'index.html.backup']

# Nested patterns
>>> list(braceexpand('python{2.{5..7},3.{2,3}}'))
['python2.5', 'python2.6', 'python2.7', 'python3.2', 'python3.3']

# Prefixing an integer with zero causes all numbers to be padded to
# the same width.
>>> list(braceexpand('{07..10}'))
['07', '08', '09', '10']

# An optional increment can be specified for ranges.
>>> list(braceexpand('{a..g..2}'))
['a', 'c', 'e', 'g']

# Ranges can go in both directions.
>>> list(braceexpand('{4..1}'))
['4', '3', '2', '1']

# Unbalanced braces raise an exception.
>>> list(braceexpand('{1{2,3}'))
Traceback (most recent call last):
    ...
UnbalancedBracesError: Unbalanced braces: '{1{2,3}'

# By default, the backslash is the escape character.
>>> list(braceexpand(r'{1\{2,3}'))
['1{2', '3']

# Setting 'escape' to False disables backslash escaping.
>>> list(braceexpand(r'\{1,2}', escape=False))
['\\1', '\\2']

Metadata

Release files for braceexpand 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for braceexpand 0.1.1
File Size Uploaded
braceexpand-0.1.1.tar.gz 5.8 kB Details

Release files / braceexpand-0.1.1.tar.gz

Download URL braceexpand-0.1.1.tar.gz
Size 5.8 kB
Tags Source
SHA-256 checksum
How to use checksums
f967ca39bdb98e16299a69c45a944c5d4345393615ed6470bb1e62ca3506bf41
BLAKE2b-256 checksum
How to use checksums
9339b49b7103008b5d0348a5ca9a908759ef1c778209b19203608dda9d62da72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

1 release file

0.1.2

1 release file

This release

0.1.1 This release

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page