Skip to main content

Bash-style brace expansion for Python

Project description

build-status-img PyPI

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.7, and 3.6+

Installation

Install the braceexpand package from pypi:

$ pip install braceexpand

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

# Numbers can be negative
>>> list(braceexpand('{2..-1}'))
['2', '1', '0', '-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']

License

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

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.7.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

braceexpand-0.1.7-py2.py3-none-any.whl (5.9 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: braceexpand-0.1.7.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for braceexpand-0.1.7.tar.gz
Algorithm Hash digest
SHA256 e6e539bd20eaea53547472ff94f4fb5c3d3bf9d0a89388c4b56663aba765f705
MD5 59f9561f770011d1947b813024e3dcac
BLAKE2b-256 5493badd4f5ccf25209f3fef2573073da9fe4a45a3da99fca2f800f942130c0f

See more details on using hashes here.

File details

Details for the file braceexpand-0.1.7-py2.py3-none-any.whl.

File metadata

  • Download URL: braceexpand-0.1.7-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.4

File hashes

Hashes for braceexpand-0.1.7-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 91332d53de7828103dcae5773fb43bc34950b0c8160e35e0f44c4427a3b85014
MD5 89037c104cb409cad1be862e02f38967
BLAKE2b-256 fa93e8c04e80e82391a6e51f218ca49720f64236bc824e92152a2633b74cf7ab

See more details on using hashes here.

Supported by

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