Skip to main content

Bash-style brace expansion for Python

Project description

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']

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

braceexpand-0.1.1.tar.gz (5.8 kB view details)

Uploaded Source

File details

Details for the file braceexpand-0.1.1.tar.gz.

File metadata

  • Download URL: braceexpand-0.1.1.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for braceexpand-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f967ca39bdb98e16299a69c45a944c5d4345393615ed6470bb1e62ca3506bf41
MD5 ee78733bc649894af478aae037575dbf
BLAKE2b-256 9339b49b7103008b5d0348a5ca9a908759ef1c778209b19203608dda9d62da72

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page