Jinja2 environment supporting Python comprehensions
Project description
jinja-comprehensions
Jinja2 environments providing support for list/dict comprehensions, set literals/comprehensions, generator expressions, and list/dict spreading.
Set literals
{{ {'set', 'set', 'literal', 'literal'} }}
{'literal', 'set'}
Comprehensions
list: {{ [n // 2 for n in range(10)] }}
set: {{ {n // 2 for n in range(10)} }}
dict: {{ {n: n // 2 for n in range(10)} }}
list: [0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
set: {0, 1, 2, 3, 4}
dict: {0: 0, 1: 0, 2: 1, 3: 1, 4: 2, 5: 2, 6: 3, 7: 3, 8: 4, 9: 4}
Generator expressions
{{ (n // 2 for n in range(10)) | join(', ') }}
0, 0, 1, 1, 2, 2, 3, 3, 4, 4
List/dict spreading
{% set stuff = {'b': 98, 'c': 99, 'd': 100} -%}
{{ {'a': 97, **stuff, 'e': 101} }}
{{ [97, *stuff.values(), 101] }}
{'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101}
[97, 98, 99, 100, 101]
Environments are provided for both sync and async contexts, as well as native variants, too.
Quickstart
pip install jinja-comprehensions
And use a ComprehensionEnvironment
(or NativeComprehensionEnvironment
) instead of the vanilla jinja2.Environment
to compile your templates:
# For rendering to strings
from jinja_comprehensions import ComprehensionEnvironment
jinja_env = ComprehensionEnvironment()
# For rendering to native types
from jinja_comprehensions import NativeComprehensionEnvironment
jinja_env = NativeComprehensionEnvironment()
# For rendering to native types with async enabled
# (This env avoids some pitfalls with vanilla Jinja2 native envs and Awaitable return values)
from jinja_comprehensions import NoLiteralEvalComprehensionNativeEnvironment
jinja_env = NoLiteralEvalComprehensionNativeEnvironment()
Project details
Release history Release notifications | RSS feed
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 jinja_comprehensions-0.1.1.tar.gz
.
File metadata
- Download URL: jinja_comprehensions-0.1.1.tar.gz
- Upload date:
- Size: 12.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.13.0-52-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ac83c7f6a05d672ba0e6fe82739316635ca5a0198b1f00f85c026a92c480cdc |
|
MD5 | 428f079039d912e196696d869ce45eec |
|
BLAKE2b-256 | 080c9428d39d2c336d7dc78dbefece48189f0b6a38611acb180d87587fb738e6 |
File details
Details for the file jinja_comprehensions-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: jinja_comprehensions-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.13.0-52-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95609794d35ccbbfe8b60c8f687ca38b8b12b0899e69fb059da63022b2160ef4 |
|
MD5 | f6e82bbb63c2a4aac5b7a962cdff8204 |
|
BLAKE2b-256 | 8cd6282bcdf4acc2eed40245da036df4ddd09f67f4e26942553bdfcce4970113 |