Bash-style brace expansion for Python
Project description
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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6e539bd20eaea53547472ff94f4fb5c3d3bf9d0a89388c4b56663aba765f705 |
|
MD5 | 59f9561f770011d1947b813024e3dcac |
|
BLAKE2b-256 | 5493badd4f5ccf25209f3fef2573073da9fe4a45a3da99fca2f800f942130c0f |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 91332d53de7828103dcae5773fb43bc34950b0c8160e35e0f44c4427a3b85014 |
|
MD5 | 89037c104cb409cad1be862e02f38967 |
|
BLAKE2b-256 | fa93e8c04e80e82391a6e51f218ca49720f64236bc824e92152a2633b74cf7ab |